java字元串比較
1. java字元串比較
1、採用循環,循環b的每個字元
2、用replace方法把a中的當前循環的字元用""替換replace(當前字元, "");
3、循環完了就剩下b中不包含的字元串了Stringc = 24;
4、再循環c,跟上面的步驟一樣去除a中包含的c中的字元2,4,剩下的字元串和b是一樣的。
2. 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 = "...";啥意思?
3. JAVA比較兩個字元串是否相等用什麼
JAVA比較兩個字元串是否相等可以用equals方法或者是「==」。
equals 方法常常用來檢測兩個對象是否相等,即兩個對象的內容是否相等,如果只是比較對象的內容,而不比較對象來源和功能類型時,常用此方法。
「==」常用於用於比較引用和比較基本數據類型時是否具有不同的功能,比較基本數據類型,如果兩個值相同,則結果為true而在比較引用時,如果引用指向內存中的同一對象,結果為true。
(3)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。
4. java比較兩字元串是否相等有幾種方法
String 的equals 方法用於比較兩個字元串是否相等。由於字元串是對象類型,所以不能用簡單的「==」判斷。而使用equals比較兩個對象的內容是否相等。
注意:
equals()比較的是對象的內容(區分字母的大小寫格式),但是如果使用「==」比較兩個對象時,比較的是兩個對象的內存地址,所以不相等。即使它們內容相等,但是不同對象的內存地址也是不相同的。
5. java String類型比較
string類型比較有很多種,我們主要來講一下用的比較多的兩種(equals和==)
例如:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
那麼:
s1==s2 是 false //兩個變數的內存地址不一樣,也就是說它們指向的對象不 一樣,故不相等。
s1.equals(s2) 是 true //兩個變數的所包含的內容是abc,故相等。
總結:"=="比較的是兩個變數的內存地址,equals比較的是內容;
左上角有我頭像,歡迎來學習交流;
6. 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,大於輸出正數
7. java中比較兩個字元串是否相等的方法
你好,比較兩個字元串是否相等可以用equals方法。
比如要比較字元串變數a和字元串變數b是否相等就是a.equals(b)。這個表達式返回這個布爾值,為true表示相等,為false表示不相等。
8. JAVA如何進行字元串比較
1、首先,隨便創建一個有main方法的類。
9. java中兩個字元串如何比較大小
有三種方法實現
第一種直接用字元串類的compareTo方法:
Stringt1="20131011";
Stringt2="20131030";
intresult=t1.compareTo(t2);
第二種是把這個日期字元串轉換成long:
SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");
Dated1=sdf.parse(t1);
Dated2=sdf.parse(t2);
longresult=d1.getTime()-d2.getTime();
第三種是把日期字元串轉換成整形int:
intint1=Integer.parseInt(t1);
intint2=Integer.parseInt(t2);
intresult=int1-int2;
註:result大於0,則t1>t2;
result等於0,則t1=t2;
result小於0,則t1<t2;
10. 在java中如何對比輸入的字元串
java中字元串的比較用的是equals方法。
代碼修改如下:
import java.io.*;
class GameHelper {
public String getUserInput(String prompt) {
String inputLine = null;
System.out.print(prompt + " ");
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
inputLine = is.readLine();
if (inputLine.length() == 0)
return null;
} catch (Exception e) {
System.out.println("IOException: " + e);
}
return inputLine;
}
}
public class Demo {
public static void main (String[] arges) {
GameHelper helper = new GameHelper();
String input = helper.getUserInput("entrer a command");
if ( input.equals("-yes"))
System.out.println("yes");
else System.out.println("no");
}
}
只需將input == "-yes"改為input.equals("-yes")就行了,字元串型的比較不是用==,是用equals,int型和float型等的比較才能使用==來比較。