int[] arr={2,4,5,0,77,9};
這個陣列是如何成為物件型別的,因為我們在這里沒有使用 new 關鍵字。請解釋。
uj5u.com熱心網友回復:
Java 中只有 8 種原始資料型別(此處列出),它們是:
- 位元組
- 短的
- 整數
- 長
- 漂浮
- 雙倍的
- 布林值
- 字符
令您感到困惑的是,您在這里沒有看到“新”一詞。但答案很簡單——陣列是一個容器物件(基本集合),所以它不是原始型別,但它仍然是平臺內置的基本型別之一。
在您的情況下,還有語法糖。如果您編譯代碼并打開 .class 檔案,您會看到編譯后它可能如下所示:
int[] var10000 = new int[]{2, 4, 5, 0, 77, 9};
長期以來,Java 標準類別庫中有幾種更令人困惑的型別,以至于有一種語法糖允許在沒有“new”關鍵字的情況下呼叫建構式。例如:
String myString = "My string";
Long myLongObj = 100L;
Boolean myBooleanObject = true;
雖然String、Long和Boolean是java.lang 的物件。* 類。
uj5u.com熱心網友回復:
這是語法糖。Java 識別型別并為您創建物件。有幾個(原始)物件是以這種方式創建的。例如:
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[]...
uj5u.com熱心網友回復:
請記住這一點: 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];如果您事先不知道這些值是什么,帶有的版本 會派上用場,但是如果您知道這些值,為什么還要這樣做呢?
uj5u.com熱心網友回復:
您似乎認為這new是在 Java 中創建物件的唯一方法。不是,也可以創建物件:
- 使用拳擊;例如
Integer i = 42; - 使用類文字;例如
Class<?> c = Something.class; - 使用字串文字;例如
String s = "abc"; - 通過一個
enum類......因為每個enum值都是一個物件。 - 使用反射;例如
Constructor::newInstance - 使用
Object::clone
... 等等。
有很多方法可以創建不涉及new關鍵字的物件。
事實上,陣列是一個物件(或者更準確地說是一個參考型別的實體),因為 JLS指定它是。故事結局 ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/369999.html
