Java读书笔记

第三章

  1. Java支持两种变量类型:基本类型引用类型
  2. Java中的一个整数默认是int型。
  3. 给出一个小数,默认是double类型。float a=2.0;是错的,正确得应是float a=2.0f;
  4. 计算机中以补码的形式存放所有整数。正数的补码就是其原码,负数的补码是符号位不变其他位取反再加1。
  5. 并不是任何数除以0都报错。整数除0抛出异常。浮点数运算中除0得正无穷或负无穷。
  6. 能指定直接量的只有三种类型:基本类型、字符串、null。基本类型包括:int、long(数字末尾+L)、float(数字末尾+f)、double、boolean、char。没有byte和short类型,验证了第2条。直接量是指可以通过源代码直接给出的值,如int a=5;

第四章

  1. switch分支语句中,先匹配case语句,最后再执行default,无论default语句在什么位置。
  2. int[] 实际上是一种引用类型。
  3. 每个方法执行时会建立自己的内存栈,方法中定义的局部变脸存储在栈中,方法结束内存栈销毁。
  4. 当一个堆中的对象没有任何引用变量引用他时,系统的GC才会在合适的时候进行回收内存。

第五章

  1. this关键字总是指向调用该方法的对象。也就是说,只有当方法调用时,this所代表的对象才被确定下来。
  2. 静态方法中不能使用this引用,因为无法确定this所指对象。
  3. 静态成员不能直接访问非静态成员。
  4. Java是值传递
  5. 形参个数可变的方法:在最后一个形参类型后+…。多个参数值被当作数组传入。
  6. Java变量Java读书笔记
  7. 成员变量无需初始化(系统自动),局部变量使用前需要显示初始化(手动赋值)。
  8. 当系统第一次使用某个类时,会在类准备阶段为所有静态成员变量分配空间,并初始化类变量(执行静态代码块初始化,或者使用声明变量时赋的值)。当实例化对象时会先开辟一个对内存空间存储对象,并初始化实例变量。
    Java读书笔记
  9. 如果定义一个类时没有指定父类则默认扩展Object类。
  10. 方法的重写(Override)遵循“两同,两小,一大”
  • 方法名、参数列表相同。
  • 返回值类型、抛出异常类型小于等于父类返回值类型。
  • 子类方法访问权限大于等于父类权限。
  1. 子类无法继承父类构造器,但在调用子类构造器时,会自动调用父类构造器(默认是无参的,也可使用super指定)构造一个父类对象。
  2. SuperClass a=new SonClass();为例。即把一个子类对象赋给父类引用时,调用的子类复写了的父类方法时,总市表现子类的行为特征。
  3. 引用变量在编译时只能调用编译时类型所具有的方法,运行时则执行运行时类型所具有的方法。(同上一条)
  4. 类的初始化块先于构造器执行。
  5. 静态初始化块用于初始化静态成员变量,在类初始化阶段执行。先于普通初始化块。