色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java 堆和棧面試題

夏志豪1年前8瀏覽0評論

Java中堆和棧是非常重要的兩個概念,堆主要存儲對象(在內(nèi)存泄漏討論時會非常明顯),棧主要用于存儲局部變量和方法參數(shù)。

下面是幾個Java堆和棧的面試題:

//1. 下列代碼的輸出結(jié)果為什么?
public static void main(String[] args) {
String a = "hello";
String b = "world";
String c = a + b;
String d = "helloworld";
System.out.println(c == d);
}
//輸出結(jié)果為false,因為c不是使用字面值拼接出來的,而是通過 + 拼接的兩個變量,所以c和d在堆中的位置并不相同,即它們的引用地址不一樣。
//2. 下列代碼的輸出結(jié)果是什么?
public static void main(String[] args) {
Object object = new Object();
object.toString();
}
//輸出結(jié)果為 java.lang.Object@hashCode,toString() 方法輸出的是 Object 類的哈希值,默認實現(xiàn)是 @hashcode。在內(nèi)存中,對象被存放在堆內(nèi)存中,所以 object 的地址是在堆中。
//3. 下列代碼的輸出結(jié)果是什么?
public static void main(String[] args) {
int a = 1;
int b = change(a);
System.out.println(b);
}
private static int change(int a) {
a = 2;
return a;
}
//輸出結(jié)果為2,change() 方法并未改變原變量 a,而是創(chuàng)建了一個新的變量 a,a=2,接著返回了 a,即2,賦值給了變量 b。

總之,在Java中,堆和棧是兩個非常重要的概念,在編寫代碼時需要注意對它們的使用,避免出現(xiàn)不必要的錯誤。