天天看點

Java小零碎 leetcode小經驗—— String int Integer 互相轉換

String 轉 Integer

valueOf

String s = "123";
Integer a = Integer.valueOf(s);
           

String 轉 int

parseInt 都講得很清楚了 是parse解析到int 而不是Integer!

String s = "123;
int a = Integer.parseInt(s);
           

int Integer 轉 String

valueOf 最通用 語義上最順的寫法 請看s1 s2

你看Integer的valueOf也是同樣含義——把别的類型轉成或者包裝成自己類型

int a1 = Integer.MAX_VALUE;
Integer a2 = Integer.MAX_VALUE;
String s1 = String.valueOf(a1);
String s2 = String.valueOf(a2);
String s3 = ""+a1+a2;
           

當然了 你也可以用s3的寫法 注意每次+都會産生臨時的String對象,如果是循環多次 耗性能 此時建議使用Stringbuilder 避免臨時String對象的産生 最好還能一開始固定StringBuilder大小,這樣不會導緻其擴容造成的性能損耗。

parseInt用于實作valueOf的效果?

我這麼寫呢?對嗎?

String s = "123";
Integer a = Integer.parseInt(s);
           

回答:對的 但是有valueOf盡量用valueOf 因為語義上不是很直覺

一般某個對象 比如String的valueOf 結果就要是String,Integer也是如此 valueOf是專門用于幹對象轉換的

自動裝箱 自動拆箱 int Integer互轉

那這個代碼為什麼能用?

這裡int自動轉換到 Integer 被稱為自動裝箱過程,從原生類型到這個對象執行個體,java會幫我們自動包裝 自動裝箱 把原生類型這個值int 封裝為Integer對象執行個體

是以 int轉Integer 隻需要直接指派即可

那反過來呢?也可以的 java會幫我們自動拆箱

int Integer的差別

Integer是對象,其中一個屬性為int(真正的int值)

int是java原生的 基礎資料類型 在記憶體 堆裡邊就是32bit = 4Byte 這麼放着的 它是實體 存的就是具體的值

Integer對象執行個體 比如本例子中的a,是一個Integer執行個體的引用,類似C語言的指針 它指向的是對象執行個體。是以你看到

ArrayList<Integer>

你可以想象一下,ArrayList裝了一車子的對象引用(指針)罷了

後記

這個部落客要面向萌新 比如我這種菜雞 大佬們請勿凡爾賽說

這不就是常識?

不會把不會吧都2021年了還不會呢?

諸如此類的話 我們這些萌新生存艱難 剛開始上手敲代碼還各種小錯誤 剛學了什麼就忘了什麼 可能基礎的東西 一上手敲就忘了。。