Java学习心得(1)--判断字符串是否相等

static void checkString(String A,String B)
	{
		boolean result1=A.equals(B);
		System.out.println(A+".equal("+B+") 结果为:"+result1);
		boolean result2=(A==B);
		System.out.println(A+"=="+B+" 结果为:"+result2);
	}

	public static void main(String args[])
	{
		
		checkString("ABC","ABC");
		checkString(new String("ABC"),"ABC");
		checkString(new String("ABC").intern(),"ABC");
	}





结果为:

ABC.equal(ABC) 结果为:true
ABC==ABC 结果为:true
ABC.equal(ABC) 结果为:true
ABC==ABC 结果为:false
ABC.equal(ABC) 结果为:true
ABC==ABC 结果为:true


equals比较的是2个对象的值;而“==”是比较2个对象的引用(内存地址);

程序在运行的时候会创建一个字符串缓冲池,当使用 B = "ABC" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,

checkString("ABC","ABC");
中,String A ="ABC"先被放到了池中,所以在B被创建的时候,程序找到了具有相同值的 A,将 B 引用 A 所引用的对象"ABC";

第二个

checkString(new String("ABC"),"ABC");

中,使用了 new 操作符,创建一个新的"ABC" Sting对象被创建在内存中。A、B的值相同,但是位置不同,一个在缓冲池中,一个开辟了新的内存地址。

第三个

checkString(new String("ABC").intern(),"ABC");

intern()将开辟新地址的对象又遣返到缓冲池。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章