[英]object vs. primitive
最近有一個面試官要求定義對象和基元之間的區別。 考慮到所有語言都以原始語言開頭,這似乎是一個奇怪的問題。 你會如何回答這個問題?
我還應該指出,這次面試是針對前端開發職位的,所以他所指的語言(我假設)是 JavaScript。
原語是一種數據類型,它不由其他數據類型組成,不能進一步分解。 它就像編程場景中的原子。 我說原子是因為原子是物質的基本單位,沒有任何東西可以從它派生出來。
我的意思是,C 中的int
不能分解為更小的數據類型。 另一方面,對象可以被認為是由多個原始類型組成的分子。 例如, string
是 C++ 標准庫的一部分; 然而,它是一個對象,它在內部由較小的數據類型組成並包含方法。
需要注意的是,並非所有面向對象的語言都是基於類的(例如 Javascript)。您不能在 Javascript 中定義類,因此這里的對象完全不同。 盡管 Javascript 中的一切都是對象(Ruby 也是),但 Number 對象實際上是內部原語的包裝器。
從Java 的角度來看:
我認為primitive不能再像int、string(比如內置數據類型)那樣划分了。 另一方面,對象可以分成小塊,如數組、結構。
我只是一個學生,這是我的意見。
如果您認為我的回答有誤,您可以糾正我。
謝謝
原語
1) 原始數據類型使用少量內存來表示單個數據項。 相同原始類型的所有數據大小相同。
例如:原始類型 int 使用 32 位表示整數。 所有 int 類型的變量都使用 32 位。
2)Java中只有八種原始數據類型:byte、short、int、long、float、double、char和boolean。 Java 程序不能定義任何其他原始數據類型。
對象
對象是一大塊內存,可能包含大量數據以及處理該數據的方法(小程序)。 Java 標配了數千個對象類,程序員可以輕松創建其他類。 (雖然有成千上萬的標准課程,但對於本課程,您只需要熟悉十幾個課程即可。)
在 Java 中,當您將 k 字段發送到測試方法時,首先將其轉換為 Integer 類型。 因為原始類型不是 Object 類型的子類型之一。
public static void main(String[] args) {
int k=3;
test(k);
test2(k);
}
private static void test(Object k) {
System.out.print(k.getClass().isPrimitive());//false
}
private static <T> void test2(T k) {
System.out.print(k.getClass().isPrimitive());//false
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.