Java被認爲是一種OOP語言,儘管它不完全是OOP。 Java包含8個原語,並在interview, James Gosling解釋了原因:怎麼可能有一個純粹的面向對象的語言?
Bill Venners:爲什麼Java中有原始類型?爲什麼不是 只是一個對象?
詹姆斯戈斯林:完全是一個效率的東西。有各種各樣的人建立了系統,其中整數和所有對象。 有很多方法可以做到這一點,他們都有一些相當嚴重的問題。其中一些只是很慢,因爲它們爲所有東西分配內存。他們中的一些人試圖做對象,有時他們不是(這是標準的LISP系統所做的),然後事情變得非常奇怪。它的種類 的作品,但它很奇怪。
所以看起來內存和速度都是Java基元解決的問題。然而,這讓我想知道一個語言如何才能真實,純粹的面向對象?
如果只有一個字節原語存在,你可以從那裏建立。創建整數,字符並最終浮動和雙打。但是根本沒有任何基礎結構,你怎麼能建造任何東西?是否至少有一些基本原始的必要?換句話說,不是擴展需要的基礎數據結構?
如果我是沒有錯,一切都是Kotlin中的一個對象。這裏有var和val關鍵字和類型推斷。 – ND523
@ ND523在Kotlin中,一切都顯示爲對象,但編譯器會盡可能地將它們映射到JVM基元,以儘可能節省內存[source](https://discuss.kotlinlang.org/t/primitive-types-in-the-the- type-hierarchy/1519) – EthanBar
JavaScript是另一個所有基元都是對象的例子。例如。 'let a = 4; (「數字」)'a.toFixed(2)'(「4.00」)。 toFixed是Number類型/類的實例方法。 (42).toFixed(2)'(「42.00」)或'「test string」.toUpperCase()'(「TEST STRING」) – marekful