以前对==的理解是比较两个对象的地址,在java中就是比较hashcode,但以下代码改变了我的想法
- package com.sun.question;
- public class StringDemo {
- public static void main(String[] args) {
- // TODO Auto-generated method stub4
- String str1=new String("abc");
- String str2=str1.intern();//返回的是常量池中的abc
- String str3=new String("abc");
- String str4=str3.intern();//返回的仍旧是常量池中的abc
- System.out.println(str2);
- System.out.println(str1==str2);//false
- System.out.println(str2==str4);//true
- System.out.println(str1.hashCode());
- System.out.println(str2.hashCode());
- System.out.println(str2.hashCode());
- System.out.println(str4.hashCode());//str1,str2,str3,str4,hashcode都相同
-
- }
- }
复制代码
str2!=str1 但是他们的hashcode却相同,那么==到底比较的是什么呢?求解答啊
|
|