1.instanceof 比较实例对象是否是同一个类或者其子类。 所以在进行比较的时候,如果严格比较是否两个对象实例相等 则需要采用重写equals方法 来比较对象实例都是同一个类的对象实例。
2 成员变量:类成员和实例成员
局部变量:形参,方法局部变量,代码块局部变量。
成员变量是放在堆内存中,且类成员是放在堆内存中单独的一块内存中。局部变量则是放入栈内存中。而生命周期则是方法结束或者代码块结束则栈内存中的变量则销毁。
3.final 只能在静态初始化块或者定义处赋值,实例化对象则是在构造器内进行赋值。
4 基础类型和引用类型的final修饰不同处,
基础类型值不能变。引用类型只是引用对象地址值不能改变,但是引用所指向的对象值可以改变。
final修饰的方法不可被子类重写但是可以被重载。系统中object的getClass类就是final修饰
final修饰的类不可继承 例如Math类
不可变类 包括8个包装类和String类,当实例化这些类时。他们的实例变量是不可变的。
自定义不可变类规则:变量采用private和final来修饰,只提供有参的构造方法,只提供get方法。重写equals方法和hashcode方法 保证他们hashcode在比较的时候想等。
5 接口可以继承多个接口 但是不能继承类,接口可以定义fied但是只能定义常量,可以定义内部类。
6.内部类 非静态内部类是存有一个外部类的引用实例的,静态内部类是外部类的类成员,可以理解为内部类就是一个外部类的成员 可以是类成员 也可以定义为实例成员。局部内部类的外层是方法所以不能用static修饰。
匿名内部类 最常见的就是在以接口类为参数的实现。匿名内部类不能是抽象类 因为在使用匿名内部类的时候就会为它创建对象,而抽象类是不能实例化的。匿名内部类没有构造方法。
7枚举类 集成于Enum类 而不是object类 非抽象枚举类不能派生子类 因为默认会用final修饰。抽象类枚举类则可以派生子类
网友评论