1. 程式人生 > >【java】字串比較分析

【java】字串比較分析

在敘述String類知識點的部落格中提到了字串比較有如下兩種方式:
==.equals()
前者是比較變數所指向的值在堆空間上的記憶體地址值。
後者是比較字串的值。
接下來將對上述兩種方式進行分析:


使用“==”比較字串:
有如下程式碼:

	String str1 = "Hello" ;
	String str = new String("Hello") ;
	System.out.println(str1==str); 

執行結果如下:
在這裡插入圖片描述
str1和str的內容一樣呀,為什麼結果會使不相等呢?
來看如下記憶體圖分析:
在這裡插入圖片描述

可以看出,str1和str分別在堆空間中開闢了一塊新的記憶體空間存放“Hello”,而“==”是比較變數所指向的值在堆空間上的記憶體地址值,str1和str的記憶體地址值不相等,所以比較結果為false。


使用equals方法比較字串:
有如下程式碼:

	String str1 = "Hello" ;
	String str = new String("Hello") ;
	System.out.println(str1.equals(str));

執行結果如下:
在這裡插入圖片描述

(記憶體圖同上)
equals方法比較的是字串的內容,不關心字串的記憶體地址,所以str1和str是相等的。