==與equals各種比較
阿新 • • 發佈:2019-01-01
package com.xxx.xx;
/*相等比較===:比較記憶體地址;equals比較值(equals相等hecode也相等)
*
*
* */
public class Equal {
public String strM;
public int strN;
public Equal(String strM, int strN) {
this.strM = strM;
this.strN = strN;
}
public static void main(String[] args){
String str1 = "hode";
String str2 = "hode";
String str3 = new String("hode");
String str4 = new String("hode");
Equal el1 = new Equal("hode",1);
Equal el2 = new Equal("hode",1);
System.out.println("**********************str1與str2********************************");
System.out.println("(str1==str2) ="+(str1==str2));//true
System.out.println("str1.equals(str2)="+str1.equals(str2));//true
System.out.println("**********************str1與str3********************************");
System.out.println("(str3==str4) ="+(str3==str4));//false
System.out.println("str3.equals(str4)="+str3.equals(str4));//true
System.out.println("**********************str3與str4********************************");
System.out.println("(str1==str3) ="+(str1==str3));//false
System.out.println("str1.equals(str3)="+str1.equals(str3));//true
System.out.println("**********************el1與sel2********************************");
System.out.println("(el1==el2) ="+(el1==el2));//false
System.out.println("el1.equals(el2)="+el1.equals(el2));//false
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println("**********************s1==s2+s3拼接********************************");
System.out.println("s3==s1+s2="+s3==s1+s2);//false(s1和s2是兩個變數是先開空間再拼接在一起,所以不和s3地址值一直)
System.out.println("**********************s1equals(s2+s3)拼接********************************");
System.out.println("s3.equals(s1+s2)="+s3.equals(s1+s2));//true
System.out.println("******************************************************");
System.out.println(s3=="hello"+"world");//true(因為"hello"和"world"是常量,所以先拼接再去找有沒有這個拼接後的常量,發現有,s3所以相等)
System.out.println("s3.equals('hello'+'world')="+s3.equals("hello"+"world"));//true
}
}
/*相等比較===:比較記憶體地址;equals比較值(equals相等hecode也相等)
*
*
* */
public class Equal {
public String strM;
public int strN;
public Equal(String strM, int strN) {
this.strM = strM;
this.strN = strN;
}
public static void main(String[] args){
String str1 = "hode";
String str2 = "hode";
String str3 = new String("hode");
String str4 = new String("hode");
Equal el1 = new Equal("hode",1);
Equal el2 = new Equal("hode",1);
System.out.println("**********************str1與str2********************************");
System.out.println("(str1==str2) ="+(str1==str2));//true
System.out.println("str1.equals(str2)="+str1.equals(str2));//true
System.out.println("**********************str1與str3********************************");
System.out.println("(str3==str4) ="+(str3==str4));//false
System.out.println("str3.equals(str4)="+str3.equals(str4));//true
System.out.println("**********************str3與str4********************************");
System.out.println("(str1==str3) ="+(str1==str3));//false
System.out.println("str1.equals(str3)="+str1.equals(str3));//true
System.out.println("**********************el1與sel2********************************");
System.out.println("(el1==el2) ="+(el1==el2));//false
System.out.println("el1.equals(el2)="+el1.equals(el2));//false
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println("**********************s1==s2+s3拼接********************************");
System.out.println("s3==s1+s2="+s3==s1+s2);//false(s1和s2是兩個變數是先開空間再拼接在一起,所以不和s3地址值一直)
System.out.println("**********************s1equals(s2+s3)拼接********************************");
System.out.println("s3.equals(s1+s2)="+s3.equals(s1+s2));//true
System.out.println("******************************************************");
System.out.println(s3=="hello"+"world");//true(因為"hello"和"world"是常量,所以先拼接再去找有沒有這個拼接後的常量,發現有,s3所以相等)
System.out.println("s3.equals('hello'+'world')="+s3.equals("hello"+"world"));//true
}
}