日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

收集Java面试题知识点(Java基础部分三)

發布時間:2024/4/13 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 收集Java面试题知识点(Java基础部分三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、String s = “Hello”;s = s + ” world!”;這兩行代碼執行后,原始的String對象中的內容到底變了沒有?

沒有。因為String被設計成不可變(immutable)類,所以它的所有對象都是不可變對象。在這段代碼中,s原先指向一個String對象,內容是 “Hello”,然后我們對s進行了+操作,那么s所指向的那個對象是否發生了改變呢?答案是沒有。這時,s不指向原來那個對象了,而指向了另一個 String對象,內容為”Hello world!”,原來那個對象還存在于內存之中,只是s這個引用變量不再指向它了。
通過上面的說明,我們很容易導出另一個結論,如果經常對字符串進行各種各樣的修改,或者說,不可預見的修改,那么使用String來代表字符串的話會引起很大的內存開銷。因為 String對象建立之后不能再改變,所以對于每一個不同的字符串,都需要一個String對象來表示。這時,應該考慮使用StringBuffer類,它允許修改,而不是每個不同的字符串都要生成一個新的對象。并且,這兩種類的對象轉換十分容易。
實際上,當我們需要一個字符串對象時,應該使用如下語法來創建String對象:
Sring s = “fkjava.org”;
也就是直接使用字符串直接量的語法。而不是:
String s = new String(“fkjava.org”);
對于第二種語法而言,每次都會調用構造器生成新的String對象,性能低下且內存開銷大,并且沒有意義,因為String對象不可改變,所以對于內容相同的字符串,只要一個String對象來表示就可以了。
基于這樣一種想法,Java提供了字符串緩存池來管理字符串直接量,當程序多次用到同一個字符串直接量時,系統會讓它們都引用字符串緩存池中的同一個String對象。因此使用在程序中使用字符串直接量可以充分利用這個特性來降低系統內存開銷,提高程序性能。

2、下面這條語句一共創建了多少個對象:String s=”a”+”b”+”c”+”d”;

答案是
就創建了一個
String s = "a" + "b" + "c" + "d" + "e";
賦值符號右邊的"a"、"b"、"c"、"d"、"e"都是常量
對于常量,編譯時就直接存儲它們的字面值而不是它們的引用
在編譯時就直接講它們連接的結果提取出來變成了"abcde"
該語句在class文件中就相當于String s = "abcde"
然后當JVM執行到這一句的時候, 就在String pool里找
如果沒有這個字符串,就會產生一個

3、

4、

5、

6、

7、

8、

9、

10、

未完待續。。。

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的收集Java面试题知识点(Java基础部分三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。