我在JVM規範中讀到數據類型byte,short和char在內部被視爲int。 那麼,爲什麼有這些數據類型,如果我們沒有從他們的小尺寸的好處?爲什麼數據類型byte,char和short需要
7
A
回答
8
在部分它是用於與C/C++的相容性,並且部分地是爲了節省內存 - 內部,短是存儲作爲短,但它的處理爲整數。 A new short[10]
佔用內存的一半多new int[10]
+2
+1:數組,主要是。在堆棧或局部變量中,'byte'佔用的空間與'int'相同(如果願意,JVM可以優化它)。 –
1
這是爲了記憶的目的。每個變量都有一個內存空間。空間的大小取決於您使用的變量類型。
否則,在操縱字符串時,char類型非常有用。事實上,你可以使用string.charAt(index)
1
這個字符串中的一個字符給出的答案非常好,但我會指出另一種可能的用法。你可以做一些編譯時檢查數據類型。例如,你可以將一個人的年齡(以年爲單位)看作一個字節,並且可以進行編譯時檢查,以確保存儲在int或short中的較大值用於該字段。
相關問題
- 1. 爲什麼Scala爲Short和Byte類型定義了一個「+ =」運算符?
- 2. 爲什麼在java中將byte和short解釋爲整數?
- 3. 爲什麼我需要在字節和short上顯式地轉換char原語?
- 4. 爲什麼在java中將`char`轉換爲`int`而不是`short`或`byte`?
- 5. JDBC ResultSet對象類型映射沒有Byte或Short?爲什麼只有Integer?
- 6. Java HashSet和數據類型Short,incompatibility?
- 7. 爲什麼我們使用signed和unsigned char數據類型?目的是什麼?
- 8. 爲什麼haskell中的「需要」更改數據類型?
- 9. 爲什麼我們需要指針的不同數據類型?
- 10. C#需要什麼類型?
- 11. Java - 爲什麼char會隱式轉換爲byte(和short)原語,當它不應該?
- 12. 數據類型混亂,需要char數組中的整數
- 13. 需要的類型參數是什麼?
- 14. C中的'short'數據類型是什麼?
- 15. 爲什麼我們需要分開Apply和Applicative類型的類?
- 16. 爲什麼參數類型的`putchar()`,`fputc()`和`putc()`不是`char`?
- 17. 爲什麼uploadTaskWithRequest:fromData:需要數據參數?
- 18. C錯誤:格式'%s'需要類型爲'char *'的參數,但參數2的類型爲'char(*)[100]'
- 19. 爲什麼Objective-C布爾型數據類型被定義爲signed char?
- 20. 不能將類型'char'隱式轉換爲類型Test <char>,爲什麼?
- 21. 將char轉換爲short
- 22. 將short int []轉換爲char *
- 23. 爲什麼oozie需要數據庫?
- 24. 爲什麼ANSIBLE不需要數據庫?
- 25. 爲什麼需要多個數據庫?
- 26. 核心數據:爲什麼需要NSFetchedResultsControllerDelegate?
- 27. 使用LshIndexParams,flann索引需要什麼類型的數據?
- 28. 什麼時候需要在SPA中申請類型數據?
- 29. c# - 是SHORT數據類型還是INT?
- 30. Cast char to short
主要用於數組。一組短褲仍然使用相同尺寸的整數數組的一半內存。 – MTilsted
我確定有很多算法取決於不同積分類型的值範圍,例如,期望積分值在某個點溢出。 –
除了內存問題外,這些基本的數字類型在處理通信協議或與Java代碼之外定義的緊湊結構交互的代碼時通常很方便。當然,如果這個語言的設計者真的關心這個用例,他們會在語言中添加無符號類型,這樣我們就不需要像'b&0xFF'這樣的可怕技巧...... –