Java String類中的equals函式與==的區別
阿新 • • 發佈:2018-12-19
String型別中的equals函式格式為 String A.equals(String B) 返回值為true或false。 如圖 當st1賦值為“123”時,“123”作為首次出現的值會被放在一個記憶體空間(地址為ad1)中。 當st1與st2用’==來進行比較時,並不是比較它們的值,而是比較它們的值的地址ad,如果ad相同,那麼st1=='t2。 但是當用Scanner進行字串輸入input時,此時input的值“123”的地址(地址為ad2)並不是st1的值“123”的地址(地址為ad1)。所以當st1與input用 '==‘比較時,比較的雖仍然是其值所在的地址,但是地址不同,自然返回值為false。 而equals函式比較的是地址指向的值而不是地址。所以縱然ad1不等於ad2,但是ad1,ad2中的值“123”是相等的,返回值為true。
import java.util.Scanner; public class aboutEquals { public static void main(String[] args) { System.out.print("輸入:"); Scanner sc=new Scanner(System.in); String input = sc.nextLine(); String st1="123"; String st2="123"; if(st1==st2) { System.out.println("==:st1==st2"); } else { System.out.println("==:st1!=st2"); } if(st1==input) { System.out.println("==:st==輸入"); } else { System.out.println("==:st1!=輸入"); } if(st1.equals(input)) { System.out.println("equals:st1==輸入"); } else { System.out.println("equals:st1!=輸入"); } } }