面試題 jvm對字串的優化

2021-10-05 04:02:00 字數 495 閱讀 4506

遇到了這樣乙個面試題

string str = "hi," + "lao" + "wang";

string str2 = "hi,laowang";

system.out.println(str == str2);

輸出結果如你所料,正是true

但是為什麼會是ture呢

首先我們了解一下字串,

眾所周知,字串就是乙個不可變類,對它的任何操作,其實就相當於建立了乙個新物件。

我們的str不是天然可以進行+的運算的,這就是jvm對其的優化

通過jvm的優化

我們剛才的語句其實就等價於string str = 「hi,laowang」;

就是只建立出乙個物件,將物件放入堆中。

我們的str2就直接在堆中拿到這個物件的引用,所以兩者引用的位址

所以str和str2才會等同於乙個位址。

字串高頻面試題。

一 題目 把乙個01 只包含0和1的串 串進行排序。可以交換任意兩個位置,求最少交換的次數。方法 仿造快速排序裡面的partition的過程。最左邊的0和1是沒有意義的,從左到右掃到第乙個1,從右到左掃到第乙個0,然後交換,然後繼續掃下去,就ok啦。include include define ma...

面試題 分割字串

package interview.string public class splitdemo 程式設計 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截半個,如 我abc 4,應該截為 我ab 輸入 我abc漢def 6,應該輸出為 我abc 而不是...

字串相關面試題

面試題目 字串專題 c字串處理函式彙總實現 面試大多會用到 一道面試題 從乙個字串中找出第乙個不重複字元 程式設計師面試題精選100題 36 在字串中刪除特定的字元 一 整數與字串之間的相互轉換 字串處理函式彙總實現 面試大多會用到 轉換字串 插入字元個數 www.firnow.com 常見c語言面...