①Java概述:
- Java运行机制
- JDK
- Java开发规范
1.编译:通过javac将源文件(扩展名是.java)编译成字节码文件(扩展名是.lass文件) 2.运行:通过java运行.class文件,即将.class文件装载到JVM中执行 3.Java程序执行入口是mian()方法:
public static void main(String[]) args{...}
4.严格区分大小写 5.一个文件中可以包含多个类,但只能包含一个public类 6.源文件中的public的类名和文件名一致
②变量:
- 数据类型
1.变量的三部分:类型、名称、数值 2.加法的两种用法:
- 加号左右两边都是整数:则做数值运算相加
- 加号两边任意一个是字符串类型,就做拼接,如果是字符,由于java中字符表示的是数值,因此字符相加就是将字符对应的值相加后得到一个新的值
System.out.print("100"+9); 1009
System.out.print(100+9); 109
System.out.print("你好"+9+10); 你好910
3.浮点类型中的细节:
- 小数:0.123=.123(前面那个0可以省略)
- 科学计数法:
- 1.2e+5=1.2*10^5
- 8.1E-9=8.1*10^(-9)
4.在不知道数的大小情况下,整数类型推荐使用int,浮点数类型推荐使用double 5.浮点数默认是double类型,如果要表示成float就需要在数值末尾加上f / F 6.java中char本质是一个整数,因此在默认输出会得到unicode码所对于的字符,如果想得到整数,就需要使用(int)字符 7.字符类型的值输出时具体值所对于的字母,如a = 97 ,那么输出的就是a 8.java中每个变量都需要声明类型,即使是通过赋值得到的变量,也需要声明类型 9.String与其他类型的转换 ① :String->double
String a = "18.8";
double b = Double.parseDouble(a)
②:char->String
char a = '你好';
String b = a+" ";
③运算符:
- 二进制
- 位运算符
1.整数做除法,结果只有整数;小数做除法才得到小数 2. &&、& ① 短路与&&:两个都为真结果为真,否则为假;当第一个条件不成立时,就不执行第二个条件 ②逻辑与&:两个都为真结果为真,否则为假;当第一个条件不成立时,仍然要执行第二个条件 编程中常用短路与&&效率更高 3. || 、| ①短路或|| :两个条件中任意一个条件为真,结果为真;当第一个条件为真时,就不需要判断第一个条件,效率更高 ②逻辑或| : 两个条件中任意一个条件为真,结果为真;当第一个条件为真时,仍然需要判断第一个条件 编程中常用短路或||效率更高 4.复合赋值运算符:会在计算机中做一种类型转换,如:
byte b = 2;
b += 1; //此处相当于:b = (byte) (b+1)
//输出:b = 3
④控制结构:
- 循环
1.多分支结构:if-else if…-(else) ①有else:如果所有条件都不满足,就默认去执行else里面的语句 ①无else:如果所有条件都不满足,就无执行入口,不执行 最多有一个执行入口,任意一个条件满足就不在往下判断了 2.switch细节: ① switch后的表达式的类型应该和case后的常量的数据类型保持一致,或者刻意通过类型转换链条进行转换 ② 表达式返回值只能是以下数据类型:byte、short、int、char、enum、String ③ 如果case后的语句执行后没有break 语句,那么就穿透,不需要判断下一个case,直接执行下一个语句 3.while 和 do-while去要账 while(文明要账):先去看看有没有能力还钱,要是有能力,就执行还钱语句 do-while(暴力要账):先不管别人有没有能力还钱,上去就叫人还钱,到最后判断有没有能力还钱
4.判断两个字符串是否相等: String name = “珍珠”; if(“丁真”.equals(“name”))
⑤数组、排序、查找:
- 数组
1.表示方法: 一组浮点数组:double [ ] num= {1.2 , 2.6 , 1.9}; 索引:num[0]、在使用循环遍历时,一般使用(int i =0 ; i 对象 的集中说法: ① 创建一个对象 ② 实例化一个对象 ③ 把类实例化 5.对象的内存布局 基本数据类型直接存放,字符串和对象都是引用数据类型,需要通过内存地址存放与访问 将类信息加载到方法区(属性、行为)- 在堆里根据不同的属性分配空间(字符串型、整型)- 如果堆里的空间是字符串类型,那就分配一个地址再指向常量池,如果是基本数据类型,就直接放在堆里 - 然后将堆里的地址返回给栈里的 cat 注意真正得到对象是new Cat() ,也就是堆里面以及方法区包含的内容才是真的对象,而cat只是指向这个对象的,它只是对象的名字 6.对象的属性的默认值遵守数组的默认值的规则 7.对象分配机制
8.方法的调用机制
9.类中的方法调用: ① 同一个类中的方法调用:直接调用方法,如 metho01(); ② 在不同类中调用方法:需要先创建一个对象,然后通过对象调用类, 如 Arr myArr = new Arr(); myArr.method(); 10.方法中的传参机制 ① 基本数据类型: 传递的是值,形参的改变不会影响到实参(形参是传入调用的方法里的参数,实参是main主方法里的参数),并且由于有一个方法就会在栈中开一个独立空间,因此调用的方法和main主方法之间是独立空间,调用方法改变的参数不会影响到主方法中的参数 ② 引用数据类型: 传递的是地址,因为引用数据类型是需要使用地址指向堆空间的,因此,引用数据类型传递的是地址而不是具体的值,那么在改变调用方法中的参数时,就直接使得地址指向的堆空间中的值改变了,进而也就改变了main主方法中的参数值 11.递归执行机制: 当一个方法执行完毕或者遇到 return 就会返回,遵循谁调用就将结果返回给谁 从最上层的栈返回值,依次往下返回,上层返回的值给到下层调用的地方,即在哪调用的就返回到这里 12.变量的作用域: ① 全局变量:在类里面定义的参数,有默认值,不用赋值输出也不会报错 ② 局部变量:在类里面的方法中定义的参数,没有默认值,需要赋值才能输出 13.方法和构造器的区别:
① 方法:
创建对象-调用类里的方法以及按需求赋值
可以调用方法
② 构造器:
在创建对象的同时就给对象赋值
.没有返回值
创建对象+给对象赋值=构造器(注意:构造器是初始化对象)
名字和类名一致
.没有方法中的返回值和void
不能调用构造器
14.有构造器后的对象创建流程 15.this关键字:那个对象呗调用,this就代表哪个对象