簡體   English   中英

Java編程語言中的object是怎樣一個數組?

[英]How an array is object in Java programming language?

int[] arr={2,4,5,0,77,9};

這個數組是一個 object 類型,因為我們在這里沒有使用 new 關鍵字。 請解釋。

Java( 此處列出)中只有 8 種原始數據類型,即:

  • 字節
  • 短的
  • 整數
  • 漂浮
  • 雙倍的
  • boolean
  • 字符

讓您感到困惑的是,您在這里看不到“新”詞。 但答案很簡單——數組是一個容器object(基本集合),所以它不是原始類型,它仍然是平台內置的基本類型之一

在您的情況下,還有語法糖。 如果你編譯你的代碼並打開 .class 文件,你會看到編譯后它可能看起來像這樣:

int[] var10000 = new int[]{2, 4, 5, 0, 77, 9};

在 java 標准 class 庫中有幾個更令人困惑的類型,以至於有一個語法糖允許在沒有“new”關鍵字的情況下調用構造函數。 例如:

String myString = "My string";
Long myLongObj = 100L;
Boolean myBooleanObject = true;

雖然StringLongBoolean是 java.lang 的對象 * 課程。

這是語法糖。 Java 識別類型並為您創建 object。 以這種方式創建了幾個(原始)對象。 例如:

String str = "Hey I am a new String";
// But this can also be done this way:
String str1 = new String("hey");

Integer nrInt = 1;
Integer nrInt1 = new Integer(2); // Very unusual though

// Same story with Double, Long, int[], double[]...

請記住: int[] arr={2,4,5,0,77,9};

只是一種較短的寫作方式:

int[] arr = new int[6];
arr[0] = 2;
arr[1] = 4;
arr[2] = 5;
arr[3] = 0;
arr[4] = 77;
arr[5] = 9;

Java 提供了幾種寫某些東西的方法。 帶有... = new int[5];的版本如果您事先不知道這些值是什么,它會派上用場,但是如果您知道這些值,為什么還要這樣做呢?

您似乎認為new是在 Java 中創建 object 的唯一方法。 不是,也可以創建對象:

  • 使用拳擊; 例如Integer i = 42;
  • 使用 class 文字; 例如Class<?> c = Something.class;
  • 使用字符串文字; 例如String s = "abc";
  • 通過enum class... 因為每個enum值都是 object。
  • 使用反射; 例如Constructor::newInstance
  • 使用Object::clone

... 等等。

很多方法可以創建不涉及new關鍵字的對象。

實際上,數組是 object(或更准確地說是引用類型的實例),因為 JLS指定它是。 故事結局...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM