Java基礎問題(1)(jdk/jre/equals)

1.JDK和JRE
1.1 JDK(Java development kit)Java開發工具包,面向開發人員使用的SDK(software development kit)包括庫函數,編譯程序等,JDK包含JRE,JRE包含JVM。
1.1 JRE(Java runtime environment)Java運行環境,在JDK的安裝目錄裏你可以找到jre目錄,裏面有兩個文件夾bin和lib,在這裏可以認爲bin裏的就是jvm,lib中則是jvm工作所需要的類庫,而jvm和 lib和起來就稱爲jre
jvm:Java虛擬機,Java語言實現跨平臺的核心,所有的java程序會首先被編譯爲.class的類文件,這種類文件可以在虛擬機上執行,也就是說class並不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行

2.“==”和equals的區別
前者是對於基本數據類型作比較:byte,short,char,int,long,float,double,boolean,直接比較他們的值是否相同,如果是比較對象的話就回去比較他們的內存中的地址,對於引用的數據類型來說,除非是同一個new 出來的對象,否則結果都爲false;
equals:Object超類當中定義的equals方法默認比較對象的內存地址,但在其他類方法中equals方法被重寫了。比如說String ,Integer等,比較成員變量的值是否相等而不是比較內存地址。

public static void  main(String[] args){
    //基本數據類型比較
    int a = 111;
    int b = 222;
    int c = 111;
    System.out.println("a == b:  "+ Boolean.valueOf(a == b));
    System.out.println("a == c:  "+ Boolean.valueOf(a == c));
    //對象類型比較
    TestOne testOne = new TestOne();
    System.out.println("testOne.equals(testOne):  "+ Boolean.valueOf(testOne==testOne));
    System.out.println("testOne.equals(testOne):  "+ Boolean.valueOf(testOne.equals(testOne)));
    String h = new String("hello");
    String w = new String("world");
    String m = new String("hello");
    System.out.println("h == w:  "+ Boolean.valueOf(h==w));
    System.out.println("h.equals(w):  "+ Boolean.valueOf(h.equals(w)));
    System.out.println("h == m:  "+ Boolean.valueOf(h==m));//地址比較,
    System.out.println("h.equals(m):  "+ Boolean.valueOf(h.equals(m)));//值比較
}

輸出:

a == b:  false
a == c:  true
testOne.equals(testOne):  true
testOne.equals(testOne):  true
h == w:  false
h.equals(w):  false
h == m:  false
h.equals(m):  true

3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章