Equals和==的区别
==:比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否指向相同的对象,比较的是真正意义上的指针操作(int a=10与long b=10L与double c=10.0都是相同的,因为他们都指向地址为10的堆)
Equals:用来比较的是两个对象的内容是否相等,由于所有类都继承Object类,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中方法,而Object中的equals方法返回的却是==的判断
String s=”asd”是一种非常特殊的形式,和new有本质的区别,他是Java中唯一不需要new就可以产生对象的途径,以String s=”asd”的形式赋值在Java中叫直接量,他是在常量池中而不是像new一样放在压缩堆中,只要值相同,任何多个引用都指向同一个对象
String s=”asd”首先在内存中找是不是有”asd”这个对象,如果有就直接让s指向那个”asd”,如果内存中没有”asd”,就创建一个新对象保存”asd”,s指向这个新建的对象的地址,而String s=new String(“asd”)就是不顾那内存是不是已经有”asd”这个对象,都新建一个对象保存”asd”.
浙公网安备 33010602011771号