(看的韩顺平的课)JAVA基础(初级)

(看的韩顺平的课)JAVA基础(初级),第1张

(看的韩顺平的课)JAVA基础(初级) 一、如何快速学习

需要框架细节 二、JDK JRE 是什么(区别)?

JDK

JDk(开发人员使用)= JRE + 开发工具集(eg:Javac,Java 编译工具)

JRE

JRE(仅使用)= JVM + JavaSE 标准类库

编译器 != JVM

 

三、运行机制

执行流程

.java(源文件) ---编译 javac ---> .class(字节码文件) -----运行 Java -----> 结果

注 :使用Java命令行运行时,注意不写 .class

.class 装载到 JVM 机上执行

class 类

四、注意事项

pubilc 只能有一个,其他任意数量

编译后,每一个类都对应一个 .class

文件名与 public 的类名一致,否则编译失败

五、注释

文档注释

 

javadoc -d D:\temp(生成的文档的位置)-author -version xxxxx.java

六、规范

Tab: 整体后移

shift + Tab: 整体前移

源文件应为 utf-8 (实际开发中)

七、DOS的基本原理

DOS 磁盘 *** 作系统

md 创建新目录 rd 删除目录

dir 查看当前目录

cd 切换为其他盘符 change directory

cd /D :c 切换到c盘 /D 为改变驱动器(盘)的当前目录或者当前驱动器

tree d:

cls 清屏

exit 退出

echo 输入内容到文件

move 剪切

八、相对路径绝对路径

.. 父目录(相对路径)..

. 当前目录 .

根目录

九、变量

类型+名称+值

变量表示存储区域

int 4 字节

double 8 字节

运算从左至右:

System.out.println( 100 + 300 + "hello"); //400hello

System.out.println("hello" + 100 + 300); //hello100300

System.out.println(' a ' + 100 ); // 97 + 100

十、数据类型

基本数据类型

数值型

    整数类型 :

byteshortint(整数默认为int)long(L/l)1(8bit)2(16bit)4(32bit)8( 64bit)

eg:4 -- 占 4 个字节,int 类型

 

    浮点型:

float(F/f)double(默认)48

浮点类型 = 符号 + 指数 + 尾数

浮点(陷阱)比较相等时,应使用 if ( math.abs (num1 - num2) < 0.00001 ) "相等" ;

字符型 char 2字节

使用的是 unicode 码兼容了 Ascall 码,中文英文都是二字节,utf-8 的英文一个字节,中文三个字节

GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。

为什么编码有ASCII、Unicode、UTF-8之分? - 知乎

 

可以直接 char = 77

(此时77不是 int 类型,优先级:先看是否为 Ascll 内的数)

(Ascll 码占一个字节,but 只有 128 个字符);

char = ‘ t ’; // 制表位 (转义字符)

chart 可以保存 int 的常量值,但是不能保存 int 的变量值。

‘ ’ 单引号 ----字符

” “ 双引号== 字符串 sout(name + "t");

char 的本质时一个整数,在输出时,是Unicode码所对应的字符

 

布尔型 bool 1 java 只能用 false true 表示 bool 类型 c语言可以用 0 1

基本数据类型转换细节

小加大,统一为大 特殊:byte + short = int ;byte + byte = int ; (byte chart short)三者计算时,先转换为int类型。

byte b1 = 10; //对 ,优先级 1. 先判断是否在范围内。 2. 若不在,再观察是否类型不匹配

b1 = b1 + 10;// 错 byte int 数值看范围,变量看类型

> b1 = (byte)(b1 + 10); // 对

int a = 10; byte b2 = a; // 错 如果是变量赋值,要判断类型

 

{byte,short} 不与 chart 自动转换

bool 不参与转换

int n = 1L; //错误

long n2 = 1L;//对

小转大 强转

(int)4.2 * 3.3 = 4 * 3.3 强转符号只对最近的 *** 作数有效。

大专小 隐式转换(不用显示的写)

基本数据类型和 String 类型的转换

引用数据类型

类(class):string

接口(interface)

数组

十一、Java文档

 

十二、原码 反码 补码

最高位 1 -> + 0 -> -

整数三码合一

负数的反码 = 原码的符号位不变,其它按位取反

负数的补码 = 它的反码 + 1(补码把正负数统一起来)

0 的反码、补码都是 0

Java 没有无符号数

计算机运算,使用补码的方式来运算

查看结果,在转换回原码

十三、位运算

七个位运算符

 

 

算数右移 >> :

2 >> 2 0000 0010 ---- 0000 0000 2/2/2

-2 >> 2 1000 0010 ---- 1. 补码 1111 1110 2. 右移 1111 1111 3.运算后的原码 1000 0001

-2/2/2 = -1(0) 负数溢出为 -1 正数溢出为 0

1111 1101 (补码) 1111 1100 1000 0011

十四、逻辑运算符

&& 短路与 & 逻辑与

|| 短路或 |逻辑或

!逻辑非 ^ 逻辑异或

十五、类、属性与对象

属性 = 成员变量 = 字段 (三种叫法)

访问修饰符 属性类型(基本类型、引用类型) 属性名

四种访问修饰符: public protected 默认 private(后面详解)

数组、对象的参数传递是引用传递(本质是地址在传递,共用一个地址),而值传递,地址

数组、对象指向堆

字符串String = 对象,也是引用类型

内存分配机制

栈:一般存放基本数据类型(局部变量)

堆:存放对象、数组

方法区:常量池(常量:字符串等),类加载信息

示意图:

 

十六、成员方法

定义:

访问修饰符 返回数据类型 方法名 (形参列表...){

语句

return 返回值;

}

方法不能嵌套定义,可以嵌套使用

跨类调用方法时,对跨的那个类创建新对象,才能调用其方法

执行方法时,开栈

十七、重载(Overload)、可变参数(Variable paramaters)

重载优化为可变参数,

可变参数放在最后,

一个形参列表只能出现一个可变参数。

public int sum(String name, int ... nums){//nums.length nums相当于一个数组
​
•      int result = 0;
       for(int i = 0; i < nums.length; i++){
            result += nums[i];
       }
​
}
十八、作用域(scope)

全局变量 = 属性

全局变量可以不赋值,会有默认值。局部变量必须赋值

全局变量和局部变量可以重名,就近原则

属性生命周期长,随着对象的创建销毁而创建销毁

局部变量的生命周期短,随着方法的调用的创建销毁而创建销毁

全局变量可以加修饰符,局部变量不能加修饰符

十九、构造器(constructer)

访问修饰符 方法名 (形参列表...){

方法体;

}

构造器无返回值

方法名和类名必须一样

创建对象时,系统会自动调用该类的构造器并完成对对象的属性初始化

作用:完成对新对象的初始化

Person p1 = new Person("muzi", 90);//直接通过构造器来指定名字和年龄

构造器也可以重载

构造器时一种特殊的方法

若程序员不定义构造器,系统会自动生成一个默认的无参构造器(如果自定义了一个构造器,默认的无参构造器失效,需要手动写一个无参构造器,才能使用。)

二十、对象创建流程

 

    加载类的信息,只会加载一次

    在堆中分配空间(地址)

    完成对象初始化

    3.1 默认初始化

    3.2 显式初始化

    3.3 构造器的初始化

    对象在堆中的地址,返回给p(p 是对象名,也可以理解成是对象的引用)

二十一、this

public Dog(String name){
          //this.name 就是当前对象的属性name
•         this.name = name;
    
}

那个对象调用,this就代表哪个对象

细节:

访问属性:this 用于区分当前类的属性和局部变量

this不仅可以用来访问本类的属性,还可以访问其方法、构造器

访问方法:this.方法名(参数列表)继承会详细讲

访问构造器:this(参数列表);注:只能在构造器中的第一条语句访问另一个构造器

this 只能在类里使用

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5716558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存