簡體   English   中英

Java,創建新對象的意義是什么?

[英]Java, what is the point of creating new objects?

我對Java相當陌生,想知道兩者之間的區別是什么。 對於此示例,我使用了數組:

class testpile {

public static void main(String[] args)
{
int[] a = {1,2,3,4,5,6}; //First array
int[] b = new int[5];  //Second Array
b[0] = 7;
b[1] = 8;
b[2] = 9;
b[3] = 10;
b[4] = 11;

print(a); 
print(b); 

} 

public static void print(int[] a) {
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println(); 
} 


} 

我知道使用“新”會創建一個唯一的對象,但是使用一個相對於另一個有什么好處?

在您的示例中,兩者之間沒有真正的區別。 第一個主要是后者的“語法糖”。 在這兩種情況下,數組都是在堆上分配的。

這兩段代碼都創建了一個大小為5/6的int數組

在第一種情況下,數組在創建時用vale初始化

在第二種情況下,將值分配給后者

那是不同的

在這個例子中,這兩個b / w沒有區別。

In the first case the array is initialized at the time of creation
 In second case the value is assigned latter whenever you want...  

但在兩種情況下,它都會使m / m進入堆。

我知道使用“新”會創建一個唯一的對象,但是使用一個相對於另一個有什么好處?

兩種構造都做完全相同的事情(但是使用不同的數據):創建一個數組並用數據填充它。 特別地,這兩個數組都是“唯一對象”。

當您在編譯時不知道元素的大小和初始值時,可以使用“較少文字”。

int[] a = {1,2,3,4,5,6}; //First array
int[] b = new int[5];  //Second Array

它們只是創建數組的兩種不同方式。 這里實際上並沒有涉及任何OOP。

當您事先知道值時,第一個更好,否則第二個更好。

第一條語句稱為數組initialization ,其中創建六個int變量並分配每個變量。 在第二條語句中, new關鍵字創建5個int變量,其初始值為零。

使用new關鍵字,您可以在需要時實例化數組。

int []a=new int[5];

for(int i:a)
  System.out.println(i);

a=new int[]{11,22,33};

for(int i:a)
  System.out.println(i);

我認為結果是一樣的。

但是,當您使用“ new”子句創建一個數組時,應該分配一個指定的數組長度。

e.g  int[] b = new int[**5**];

並且在此示例中,您還可以為b [5]分配值。 應該不會產生編譯錯誤,但是該錯誤應該在運行時發生。

關於另一種方法,不需要指定數組的長度。 它取決於數組的元素數。

暫無
暫無

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

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