有關於why Java doesn't support unsigned types的問題和關於處理無符號類型的幾個問題。我做了一些搜索,看來Scala也不支持無符號數據類型。在Java和Scala的語言設計中,在生成的字節碼中,還是在JVM本身中,都有限制?能否有一些在JVM上運行的語言,其他語言與Java(或Scala)相同,但支持無符號的原始數據類型?Java是Java的平臺還是Java語言的特點?
8
A
回答
8
Java字節碼規範僅defines signed types:
積分類型字節,短,int和長,其值 8位,16位,32位和64位有符號的二進制補碼整數
而是語言在JVM之上實現也許可以在句法層面增加一個無符號的類型,只是在處理編譯階段的轉換。
2
處理無符號算術是一種語言/實現問題,而不是平臺 - 即使沒有本地支持,它也可以在任何平臺上模擬。
JVM沒有它作爲一個類型,所以Java/Scala /等。不支持「開箱即用」。
3
雖然未簽名的類型可能在字節碼級進行模擬也有一些缺點與:
性能:你會需要幾個字節碼操作爲每個簡單的算術運算。使用模擬無符號類型的代碼的性能比使用帶符號類型的代碼差兩到三倍。
兼容性:運行在JVM上的大多數語言都很難與大量的Java代碼兼容。當引入其他類型時,或者當某些「已知」類型的變量必須以不同方式處理時,這當然會立即被破壞。
鑑於此,無符號類型的好處是恕我直言可以忽略不計。
相關問題
- 1. 確定是否Java語言的特點是特別的Android SDK(平臺)
- 2. 我應該學習操作系統特定語言還是Java?
- 3. 多個Java語言水平
- 4. Java,Java VM,Java平臺,
- 5. Java平臺是獨立的還是與操作系統無關的?
- 6. 用於運行多個JVM平臺語言的Java沙箱
- 7. java或java庫中的語言代碼是否有常量?
- 8. 選擇語言groovy還是Java有哪些標準?
- 9. Hadoop Map/Reduce程序使用哪種語言? Java還是PHP?
- 10. 硒是一種特定的面向語言(如Java)嗎?
- 11. 關於程序設計語言史的資源,特別是Java
- 12. 在java語言
- 13. java語言的語法
- 14. Python是語言還是腳本語言?
- 15. Java建模語言是否可執行?
- 16. C語言的Java建模語言?
- 17. Java語言環境對象作用域是線程還是應用程序?
- 18. Java平臺庫的hashCode
- 19. java中的跨平臺
- 20. Java:套接字還是RMI?
- 21. Java - 列表還是數組?
- 22. Java - 解釋還是編譯?
- 23. 語言Translater Java API
- 24. java編程語言
- 25. Java語言:名稱
- 26. 交替的Java語言
- 27. Java語言中的繼承
- 28. 面向對象的Cobol需要Java還是其他一些語言來執行?
- 29. Java斷言雙是NaN
- 30. 特點在Java中這是在階
我從來沒有想過看字節碼規範。我應該。我只看了Java語言規範和各種Scala文檔。 –
「內置的整型運算符不會以任何方式指示(正值或負值)溢出;它們將溢出迴繞。」這也表明,如果你正確處理這些情況,你確實可以使用標準的算術運算符來實現無符號數據類型。 –
早在我曾經使用過QuckTime Java api的時候,它只是一個圍繞本地QuickTime庫的包裝,如果我的內存能夠爲我提供服務,那麼它就是充滿了未被整理的整數類型。這有點尷尬api明智的,但簽署,無符號轉換工作正常。 –