字元串的比較java
Ⅰ 字元串比較java限制
比較兩個字元串變數內容是否相同。
因為字元串在程序設計中是不可變的,但同時又會頻繁地使用,所以java虛擬機為了提高效率並節約內存,對具有相同字元串序列的符串直接使用同一個實例。字元串比較,如果使用「==」則是比較兩個變數是否指向同一個對象,但是不會告訴你內容是否相同。而equals方法可以比較兩個字元串變數內容是否相同。
Ⅱ java如何比較字元串
"=="和equals方法究竟有什麼區別?(這是我的個人總結,很詳細)
答:==操作符專門用來比較兩個變數的值是否相等,也就是用於比較變數所對應的內存中所存儲的數值是否相同,要比較兩個基本類型的數據或兩個引用變數是否相等,只能用==操作符。
如果一個變數指向的數據是對象類型的,那麼,這時候涉及了兩塊內存,對象本身佔用一塊內存(堆內存),變數也佔用一塊內存,例如Objet obj = new Object();變數obj是一個內存,new Object()是另一個內存,此時,變數obj所對應的內存中存儲的數值就是對象佔用的那塊內存的首地址。對於指向對象類型的變數,如果要比較兩個變數是否指向同一個對象,即要看這兩個變數所對應的內存中的數值是否相等,這時候就需要用==操作符進行比較。
equals方法是用於比較兩個獨立對象的內容是否相同,就好比去比較兩個人的長相是否相同,它比較的兩個對象是獨立的。例如,對於下面的代碼:
String a=new String("foo");
String b=new String("foo");
兩條new語句創建了兩個對象,然後用a,b這兩個變數分別指向了其中一個對象,這是兩個不同的對象,它們的首地址是不同的,即a和b中存儲的數值是不相同的,所以,表達式a==b將返回false,而這兩個對象中的內容是相同的,所以,表達式a.equals(b)將返回true。
在實際開發中,我們經常要比較傳遞進行來的字元串內容是否等,例如,String input = …;input.equals(「quit」),許多人稍不注意就使用==進行比較了,這是錯誤的,隨便從網上找幾個項目實戰的教學視頻看看,裡面就有大量這樣的錯誤。記住,字元串的比較基本上都是使用equals方法。
如果一個類沒有自己定義equals方法,那麼它將繼承Object類的equals方法,Object類的equals方法的實現代碼如下:
boolean equals(Object o){
return this==o;
}
這說明,如果一個類沒有自己定義equals方法,它默認的equals方法(從Object 類繼承的)就是使用==操作符,也是在比較兩個變數指向的對象是否是同一對象,這時候使用equals和使用==會得到同樣的結果,如果比較的是兩個獨立的對象則總返回false。如果你編寫的類希望能夠比較該類創建的兩個實例對象的內容是否相同,那麼你必須覆蓋equals方法,由你自己寫代碼來決定在什麼情況即可認為兩個對象的內容是相同的。
例:
public class compared {
public static void main(String[] args) {
String a = new String("info");
String b = new String("info");
//a和b是兩個不同的變數,而info是這兩個變數所只對象內存中所存放的值
String c = "info"; //這里的info是變數c內存中存儲的值
String d = "info";
int e = 1;
int f = 1;
System.out.println(a.equals(b)); //true 比較的是a和b兩個對象中的內容是否一樣
System.out.println(a == b); //false
System.out.println("-----------------");
System.out.println(c.equals(d)); //true
System.out.println(c == d); //true
System.out.println("-----------------");
System.out.println(e == f); //true
System.out.println("-----------------");
T t1 = new T(3,"aaa");
T t2 = new T(3,"bbb");
T t3 = new T(3,"aaa");
System.out.println(t1.equals(t2)); //false
System.out.println(t1.equals(t3)); //false
//為什麼都是false,因為我們沒有自定義equals方法,所以默認使用了Object的equals方法,而Object方法內部是使用==來比較的,因此此時你比較的永遠都是兩個變數是否指向同一對象,而這時都為新對象,所以為false。
}
}
疑問:String str = "...";啥意思?
Ⅲ Java字元串比較
1、採用循環,循環b的每個字元
2、用replace方法把a中的當前循環的字元用""替換replace(當前字元, "");
3、循環完了就剩下b中不包含的字元串了Stringc = 24;
4、再循環c,跟上面的步驟一樣去除a中包含的c中的字元2,4,剩下的字元串和b是一樣的。
Ⅳ JAVA比較兩個字元串是否相等用什麼
JAVA比較兩個字元串是否相等可以用equals方法或者是「==」。
equals 方法常常用來檢測兩個對象是否相等,即兩個對象的內容是否相等,如果只是比較對象的內容,而不比較對象來源和功能類型時,常用此方法。
「==」常用於用於比較引用和比較基本數據類型時是否具有不同的功能,比較基本數據類型,如果兩個值相同,則結果為true而在比較引用時,如果引用指向內存中的同一對象,結果為true。
(4)字元串的比較java擴展閱讀
equals 方法的特點:
1、自反性:x.equals(x)返回true;
2、對稱性:若x.equals(y)為true,則y.equals(x)亦為true;
3、傳遞性:若x.equals(y)為true且y.equals(z)也為true,則x.equals(z)亦為true;
4、一致性:x.equals(y)的第一次調用為true,那麼x.equals(y)的第二次、第三次、第n次調用也均為true,前提條件是沒有修改x也沒有修改y;
5、對於非空引用x,x.equals(null)永遠返回為false。
Ⅳ java中的字元串比較方法
java中的字元串比較方法:
1)string1.equals(string2)
2) str1==str2 。
java中字元串的比較是==比較引用,equals 比較值的做法。但是不同的聲明方法字元串的比較結果也是不同的。
例如: String str1=new String("a");
String str2=new String("a");
str1==str2 輸出false
str1.equals(str2) 輸出true
而如果這樣聲明
String str1="a";
String str2="a";
str1==str2 輸出true
str1.equals(str2) 輸出true
這是因為 equals 方法本來也是比較引用的字元串類在實現的時候重寫了該方法。
第一種聲明方法等於是聲明了兩個對象,用』==『比較是時候比較的是引用輸出的是false 由於他們的值相同用equals的時候就比較的是值了,輸出true。
第二種情況不是因為比較有與第一種有差異,而是因為聲明有差異,第二種聲明方法在聲明的時候有堆或堆棧 共用的現象,也就是說 在聲明的時候如果如果聲明為類屬性他會檢查在堆棧中有沒有與現在聲明的是相同結構的字元串。如果有就直接將地址指向已有內存地址。聲明在方法內部的局部變數原理一樣只不過他是堆棧共享。
Ⅵ java中怎麼樣比較字元串相等
==比較字元串是否引用同一地址,如果2個字元串是同一個對象,那可以用==,如果不是同一個對象,只是比較內容是否一致,則不可以用==。
比如:
String
s1
=
"abc";
String
s2
=
"abc";
System.out.println(s1
==
s2);
//
true,因為s1和s2是同一個字元串常量abc的引用,是同一個對象地址,所以相同
String
s1
=
new
String("abc");
String
s2
=
new
String("abc");
System.out.println(s1
==
s2);
//
false,因為s1和s2是兩個不同的對象,雖然字元串值都是abc,但是用==比較不相同。
Ⅶ java怎麼比較字元串大小
java的String類中有一個compareTo的方法。
publicclasstest{
publicstaticvoidmain(String[]args){
Stringa="abb";
Stringb="abc";
System.out.println(a.compareTo(b));
Stringa1="abc";
Stringb1="abc";
System.out.println(a1.compareTo(b1));
Stringa2="abd";
Stringb2="abc";
System.out.println(a2.compareTo(b2));
}
}
小於輸出負數,相等輸出0,大於輸出正數
Ⅷ java中兩個字元串如何比較大小
使用
String.compareTo
方法:
compareTo()
的返回值是int,
它是先比較對應字元的大小(ASCII碼順序)
1、如果字元串相等返回值0
2、如果第一個字元和參數的第一個字元不等,結束比較,返回他們之間的差值(ascii碼值)(負值前字元串的值小於後字元串,正值前字元串大於後字元串)
3、如果第一個字元和參數的第一個字元相等,則以第二個字元和參數的第二個字元做比較,以此類推,直至比較的字元或被比較的字元有一方全比較完,這時就比較字元的長度.
例:
String
s1
=
"abc";
String
s2
=
"abcd";
String
s3
=
"abcdfg";
String
s4
=
"1bcdfg";
String
s5
=
"cdfg";
System.out.println(
s1.compareTo(s2)
);
//
-1
(前面相等,s1長度小1)
System.out.println(
s1.compareTo(s3)
);
//
-3
(前面相等,s1長度小3)
System.out.println(
s1.compareTo(s4)
);
//
48
("a"的ASCII碼是97,"1"的的ASCII碼是49,所以返回48)
System.out.println(
s1.compareTo(s5)
);
//
-2
("a"的ASCII碼是97,"c"的ASCII碼是99,所以返回-2)
Ⅸ java 中字元串的比較
參考我的這個回答:
https://..com/question/141763716548389245.html?
Ⅹ java中比較兩個字元串是否相等的方法
你好,比較兩個字元串是否相等可以用equals方法。
比如要比較字元串變數a和字元串變數b是否相等就是a.equals(b)。這個表達式返回這個布爾值,為true表示相等,為false表示不相等。