2013-12-13 38 views
-2

Java中的每個對象都有一個原型(類),對象是這些原型的實例。如果我聲明一個數組int a[] = new int[5];這將創建一個對象,該對象可以在a引用的堆中保存5個整數。我們有這個物體的任何原型嗎?數組對象的狀態和行爲是什麼?長度是否被視爲數組對象的狀態?數組對象的類

+2

Java!= JavaScript。 – elclanrs

+0

JavaScript有原型。 Java沒有。這是什麼? –

回答

1

Is an array an object in java

如果你從JavaScript的到來,原型是不完全一樣的類。這將是更好,如果你沒有調用類的原型

Java中的每個對象都有一個原型(類)

在java對象是一個類的實例,但不是萬能的java是一個對象。出於效率原因,int,boolean,float,double,long和short(原諒我,如果我錯過了)是原語;他們不是對象。數組也不是常規對象。數組不是任何特定類的實例,但它仍然是一個對象。要檢查,如果事情是一個數組,你這樣做:

int arr[] = new int[9]; 
if (arr instanceof int[]) { 
    System.out.println("It's an array of ints!"); 
} 

上面的代碼應該輸出:這是int數組!

編輯:我意識到你可能一直在問關於JavaScript而不是Java。如果是這樣,那麼在JavaScript中,數組就是Array原型的實例。

編輯:從javaspec

10.1。陣列類型 ... 數組類型的超類型在§4.10.3中指定。

數組類型的直接超類是Object。

每種數組類型都實現Cloneable和java.io.Serializable接口。

4.10.3。數組類型間子

以下規則定義數組 類型之間的直接關係父:

If S and T are both reference types, then S[] >1 T[] iff S >1 T. 

Object >1 Object[] 

Cloneable >1 Object[] 

java.io.Serializable >1 Object[] 

If P is a primitive type, then: 

    Object >1 P[] 

    Cloneable >1 P[] 

    java.io.Serializable >1 P[] 

所以數組是它不具有可識別類特殊類型的對象,但它仍然有一個類型。它位於Class Hierarchy中,它的方法在規範中定義。

閱讀http://docs.oracle.com/javase/specs/jls/se7/html/jls-10.html更多細節

1

是。它有一個原型,因爲它是Object類的一個實例。

Integer a[] = new Integer[5]; 
    int b[] = new int[5]; 

    if (b instanceof Object) { 
     System.out.println("YES"); 
    } else { 
     System.out.println("NO"); 
    } 
    if (a instanceof Object) { 
     System.out.println("YES"); 
    } else { 
     System.out.println("NO"); 
    } 

輸出:

我想你可以檢查使用參考,如果您使用的是IDE的狀態和行爲。而且我認爲長度可以被認爲是一個國家。檢查this

enter image description here

+0

閱讀[this](http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html)以獲得對Object類的理解 – prime

0

爲@Eliiott說具體JavaScript有原型,則不應使用單詞原型當前上下文。但是根據類的概念,根據oops原則,對象的狀態被定義爲其實例變量的值,所以長度肯定會在數組對象的狀態下,因爲任何長度都是數組類中的一個字段,而對象的行爲是它所做的(它的方法),所以數組類所具有的所有實例方法都是數組對象的行爲。