1. 程式人生 > >java_==和equal方法

java_==和equal方法

類型 字符 新的 true 基本 print 運算 ant 5.0

java測試兩個變量是否相等有兩種方式:

  一種是利用“==”運算符 值和對象的判斷

  一種是利用equals()方法 只是值的判斷

1.如果兩個變量是基本類型變量,且都是數值類型(不一定數值類型嚴格相同),則只要兩個變量的值相等,就返回true。

  例如:

    int a=65;

    float b=65.0f;

    char c="A";

    System.out.print("65和65.0f是否相等:"+(a==b));//輸出true

    System.out.print("65和A是否相等:"+(a==c));//輸出true

2.如果兩個變量是引用類型變量,只有它們指向同一個對象時,“==”判斷才會返回true,但equals()方法可以比較。“==”不可用於比較類型上沒有父子關系的兩個對象。

  例如:

    String a=new String("123");

    String b=new String("123");

    System.out.print("a和b是否相等:"+(a==b));//輸出false

    System.out.print("a和b是否相等:"+(a.equals(b));//輸出true

    //a1直接引用常量池中的“你好java”

    String a1="你好java";

    //b1的“你好”、“java”在編譯時就確定下來了,直接引用常量池中的"你好java"

    String b1="你好"+"java";

    String s1="你好";

    String s2="java";

    //c1後面的字符串值不能在編譯時就確定下來,所以不能直接引用常量池中的"你好java"

    String c1=s1+s2;

    //關鍵字new調用構造器,創建一個新的String對象,並引用變量d1指向該對象

    String d1=new String("你好java");

    System.out.print(a1==b1);//輸出true

    System.out.print(a1==c1);//輸出true

    System.out.print(a1==d1);//輸出false

JVM使用常量池

  常量池(constant pool):專門用於管理在編譯時被確定並被保存在已編譯的.class文件中的一些數據。它包括了關於類、方法、接口中的常量,還包括字符串常量。

  當使用new String("你好java")時,JVM會先使用常量池來管理“你好java”直接量,再調用String類的構造器創建字符串對象。

java_==和equal方法