Python知識分享網(wǎng) - 專業(yè)的Python學習網(wǎng)站 學Python,上Python222
java面試題集錦 java基礎、集合、多線程等 PDF 下載
發(fā)布于:2024-02-18 10:48:30
(假如點擊沒反應,多刷新兩次就OK!)

 java面試題集錦 java基礎、集合、多線程等  PDF 下載  圖1

 

 

 

資料內容:

 

 

1. JDK 和 JRE 有什么區(qū)別?
JDK:Java Development Kit 的簡稱,Java 開發(fā)工具包,提供了
Java 的開發(fā)環(huán)境和運行環(huán)境。
JRE:Java Runtime Environment 的簡稱,Java 運行環(huán)境,為
Java 的運行提供了所需環(huán)境。
具體來說 JDK 其實包含了 JRE,同時還包含了編譯 Java 源碼的編譯器
Javac,還包含了很多 Java 程序調試和分析的工具。簡單來說:如果你需
要運行 Java 程序,只需安裝 JRE 就可以了,如果你需要編寫 Java 程序,
需要安裝 JDK。
2. == 和 equals 的區(qū)別是什么?
== 解讀
對于基本類型和引用類型 == 的作用效果是不同的,如下所示:
基本類型:比較的是值是否相同;
引用類型:比較的是引用是否相同;
代碼示例:
 
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

 

代碼解讀:因為 x 和 y 指向的是同一個引用,所以 == 也是 true,而
new String()方法則重寫開辟了內存空間,所以 == 結果為 false,而
equals 比較的一直是值,所以結果都為 true。
equals 解讀
equals 本質上就是 ==,只不過 String 和 Integer 等重寫了 equals 方
法,把它變成了值比較??聪旅娴拇a就明白了。
首先來看默認情況下 equals 比較一個有相同值的對象,代碼如下:
 
class Cat {
 public Cat(String name) {
 this.name = name;
 }
 private String name;
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
}
Cat c1 = new Cat("王磊");
Cat c2 = new Cat("王磊");
System.out.println(c1.equals(c2)); // false

 

輸出結果出乎我們的意料,竟然是 false?這是怎么回事,看了 equals
源碼就知道了,源碼如下:
 
public boolean equals(Object obj) {
 return (this == obj);
}

 

原來 equals 本質上就是 ==。那問題來了,兩個相同值的 String 對象,為什么返回的是 true?代碼如
下: