this 用法
- 在程序产生二义性之处,应该使用this来指明当前对象/普通方法中,this总是指向调用该方法的对象,构造方法中,this总是指向正要进行初始化的对象。
- 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中使用,并且必须位于构造方法的第一句。
- this不能用于static中
static 关键字:
- static修饰的成员变量和方法,从属于类。普通变量和方法从属于对象的。
- 静态方法中不能使用非静态的方法,但是非静态方法可以调用静态方法(main方法除外)
静态(static)初始化块
- 若存在继承关系,先初始化父级。 构造方法的执行顺序也是一样的
java 传值机制
- java中所有参数都是值传递
- 基本数据类型参数的传值
- 引用类型参数的传值
java包机制
- 包机制是java管理类的重要手段。开发中,我们会遇到大量同名的类,通过包我们很容易的对解决重名问题,也可以实现对类的有效管理。包对于类,相当于文件夹对于文件作用。
- java.lang 包不引用就可直接使用 System也是一个类 import引用
import 详解——静态导入详解
- 导入包会降低一点编译速度,但不影响运行速度
继承的重要要点
- 父类也称做超类/基类/派生类等。
- java中只有单继承,没有像C++那样的多继承。多继承会引起许多混乱,使得继承过于复杂,系统难于维护。
- java中的类没有多继承,接口有多继承。
- 子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法)但是不见得可以直接访问父类私有的属性和方法
- 如果定义一个类时,没有调用extents 则它的父类就是java.lang.Object
- instanceof 实例 运算符
方法的重写 override (区别overload重载)
- 子类通过重写父类的方法,可以用自身的行为替换父类的行为
- 方法的重写要符合以下3要点: 1)方法名,形参列表相同 2)返回值类型和声明异常类型, 子类要小于父类 3)访问权限,子类大于父类
Object类
- System.out.println(to) = System.out.println(to.toString)
- public String toString() {
return this.getClass().getName() + “@” + Integer.toHexString(this.hashCode());
} - equals方法("==")的重写_阅读Object和String的源码
super 关键字的用法
- super 是直接覆盖父亲对象额引用。可以通过super来访问父亲类中被子类覆盖的方法和属性
- super();//所有构造方法的第一句都是默认的(继承树)相比较静态初始化块
封装的作用和含义
- 联想 (继承,封装,多态)
- 访问控制符 private default protected public
多态 polmorphism
- 多态是指同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同。
- 多态的条件:要有继承和重写
对象的转型casting
- 子类可以转为父类,自动向上转型,强制向下转型。(java.lang.ClassCastException 强制转换错误)
final关键字 (常量)
- 修饰常量: 被他修饰的变量不可修改,一旦赋了初值,就不能再修改
- 修饰方法: 该方法不可以诶子类重写,但可以重载!–(方法重载是指在一个类中定义多个同名的方法)
- 修饰类: 修饰的类不能被继承,比如Math String 等
数组
- 数组也是对象
- 数组是相同类型数据的有序集合。数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下表)来访问他们
- java.lang.ArrayIndexOutOfBoundsException 数组越界
- 数组的初始化:1) 静态初始化2)动态初始化3)默认初始化
- int[] a = {2,3,4};
for (int m:a) {
System.out.println(m);
}