java中静态语句块,实例语句块的加载顺序。
JVM在加载类的时候,会先将static修饰的静态内容加载至jvm,实例变量当程序运行过程中,用到实例对象的时候,该对象才被创建并被加载至JVM。
类在执行过程中会先加载静态语句块,在执行其他方法,创建该类对象时,会先加载实例语句块,在执行对应的构造方法。在执行后续代码。
==和equalse的区别
从Object类来将,equalse和==的作用是一样的。
都是用来判断简单类型的数值大小,或者引用类型的引用地址是否相同。
但equsalse方法可以进行重写,用于判断对象是否相同。
重写equslse方法:
//重写equals
public boolean equals(Object obj){
//需要满足让equals方法去比较字符串内容
//在STRING方法中已经重写了该方法
//如果之前的a1,a2地址相同则指向同一个对象,
if (this==obj){//this是当前调用对象,谁调用this就是谁
return true;}
/*如果地址不同需要比较
this.id=id //这个可以直接调用
this.obj=obj
这样写错误,obj传入的是一个objectle类型的引用,这个
引用中并没有id
但引用的类型与star这个类型
不一定存在继承关系,或者说你传入的这个引用是不是一个star类型??
有继承关系或者说就是SRAI 这样才能进行强转!
因此需要判断之后才能进行强制类型转换
*/
if(obj instanceof Star){
//obj这个引用中也没有变量id和变量name
//需要进行强制类型转换
Star s=(Star)obj;
//强制类型转换完成以后则可以进行比较
if(s.id==id && s.name.equals(name)){ //在STRING方法中已经重写了该方法
return true;
}
}
//如果条件都不成立
return false;
}