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