您的位置:首页 > 编程语言 > Java开发

java程序的加载过程和equalse比较11

2017-02-19 10:46 417 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: