java中“==”和equal区别

来源:互联网 发布:绘画人偶软件 编辑:程序博客网 时间:2024/06/01 08:54

“==”是用来比较两个String对象在内存中的存放地址是否相同的。

String test1 = "test";String test2 = "test";String test3 = new String(test2);String test4  =new String(test2);blooean result1 = (test1==test2);blooean result2 = (test3==test4);

其中:result1为true,result2为false。

原因:程序在运行时有一个字符串缓存机制,当String test1 = “test”的时候,程序先从缓存池中查找是否有相同的String 对象,如果有的话就不会重新生成而是用缓存池中的字符串对象;如果在字符串缓存池中没找到相同的字符串对象时才会在内存中开辟一块内存区新建字符串对象。对于test1,当test1建立以后会将“test”字符串放入缓存池中,所以运行 String test2 = “test”的时候就会直接从缓存池中取出相同的对象,也就说,test1和test2的内存地址是相同的,所以,result1是true。对于new来说,每new一次就会在内存中开辟一片内存区域,test3和test4的内存地址是不同的,所以result2是false。

再说“equal方法”:

  equal方法是object类的方法,object类中的equal方法也使用“==”实现的,也就是说,如果直接继承object类的equal方法,则也是比较两个对象在内存中的地址是否相同,但是在String中将继承自object的equal方法覆盖啦!
  string中的equal方法是比较字符串内容是否相同。

0 0
原创粉丝点击