Java读书笔记
分类:
文章
•
2024-08-15 07:56:46
第三章
- Java支持两种变量类型:基本类型,引用类型。
- Java中的一个整数默认是int型。
- 给出一个小数,默认是double类型。
float a=2.0;
是错的,正确得应是float a=2.0f;
- 计算机中以补码的形式存放所有整数。正数的补码就是其原码,负数的补码是符号位不变其他位取反再加1。
- 并不是任何数除以0都报错。整数除0抛出异常。浮点数运算中除0得正无穷或负无穷。
- 能指定直接量的只有三种类型:基本类型、字符串、null。基本类型包括:int、long(数字末尾+L)、float(数字末尾+f)、double、boolean、char。没有byte和short类型,验证了第2条。直接量是指可以通过源代码直接给出的值,如
int a=5;
。
第四章
- switch分支语句中,先匹配case语句,最后再执行default,无论default语句在什么位置。
- int[] 实际上是一种引用类型。
- 每个方法执行时会建立自己的内存栈,方法中定义的局部变脸存储在栈中,方法结束内存栈销毁。
- 当一个堆中的对象没有任何引用变量引用他时,系统的GC才会在合适的时候进行回收内存。
第五章
- this关键字总是指向调用该方法的对象。也就是说,只有当方法调用时,this所代表的对象才被确定下来。
- 静态方法中不能使用this引用,因为无法确定this所指对象。
- 静态成员不能直接访问非静态成员。
- Java是值传递。
- 形参个数可变的方法:在最后一个形参类型后+…。多个参数值被当作数组传入。
- Java变量
- 成员变量无需初始化(系统自动),局部变量使用前需要显示初始化(手动赋值)。
- 当系统第一次使用某个类时,会在类准备阶段为所有静态成员变量分配空间,并初始化类变量(执行静态代码块初始化,或者使用声明变量时赋的值)。当实例化对象时会先开辟一个对内存空间存储对象,并初始化实例变量。
- 如果定义一个类时没有指定父类则默认扩展Object类。
- 方法的重写(Override)遵循“两同,两小,一大”
- 方法名、参数列表相同。
- 返回值类型、抛出异常类型小于等于父类返回值类型。
- 子类方法访问权限大于等于父类权限。
- 子类无法继承父类构造器,但在调用子类构造器时,会自动调用父类构造器(默认是无参的,也可使用super指定)构造一个父类对象。
- 以
SuperClass a=new SonClass();
为例。即把一个子类对象赋给父类引用时,调用的子类复写了的父类方法时,总市表现子类的行为特征。
- 引用变量在编译时只能调用编译时类型所具有的方法,运行时则执行运行时类型所具有的方法。(同上一条)
- 类的初始化块先于构造器执行。
- 静态初始化块用于初始化静态成员变量,在类初始化阶段执行。先于普通初始化块。