Java创建对象有以下几种方式:
用new语句创建对象。
使用反射,使用Class.newInstance()创建对象。
调用对象的clone()方法(浅克隆)。
运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法(深克隆)。
Java中类实例化顺序:
对于基本数据类型,==比较的是他们的值。基本类型是没equal方法。
对于对象类型,如果不重写equal , equal,== 他们都是比较的对象存储的地址,
重写的话可以按逻辑去比较(就比如String类equal比较的是字符串里面的值)
static
static可以用来修饰类的成员方法、类的成员变量。
static变量就是静态变量,静态变量和非静态变量,是随着类对象的创建而创建的,静态变量是属于类的,非静态变量是在对象创建的时候创建的,是属于每一个实例的,在内存中有很多拷贝。静态变量有且只有一份。
final
1.基本类型被final修饰,则是常量,不能修改,在编译的时候,就已经加载好了,对象用final修饰,对象不能被修改,对象的属性可以被修改。
2.final修饰的方法 ,子类不可以进行重写
3.final修饰的类不能被继承
this
this实在类的内部使用,this代表本类,this用来区分局部变量和成员变量,this.属性名,表示这个属性名是类的属性
super
super 关键字用于在子类中访问父类的变量和方法。
final,用于修饰属性、方法和类,属性赋值就不能重新赋值,方法不可被覆盖,类不可被继承
finally 是异常处理语言,一般以try-catch-finally出现,finnally 总是会被执行
finalize 是Object 类的一个方法,一般情况下finalize 方法,在回收对象时,finallize 方法会被执行,但是jvm 不保证一定执行这个方法,在方法中对象引用其他对象内存,可以能时对象复活
答案是不一定。
有以下两种情况finally不会被执行:
1.基本类型被final修饰,则是常量,不能修改,在编译的时候,就已经加载好了,对象用final修饰,对象不能被修改,对象的属性可以被修改。
2.final修饰的方法 ,子类不可以进行重写
3.final修饰的类不能被继承