Java,创建新对象有什么意义?

时间:2011-12-06 04:22:06

标签: java arrays oop

我对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(); 
} 


} 

据我所知,使用“new”会创建一个独特的对象,但使用一个对象有什么好处?

7 个答案:

答案 0 :(得分:3)

在你的例子中,两者之间没有真正的区别。第一个主要是后者的“语法糖”。在这两种情况下,数组都在堆上分配。

答案 1 :(得分:2)

这两个代码都创建了一个大小为5/6的int数组

在第一种情况下,数组在创建时用vale初始化

在第二种情况下,值后面分配

这就是差异

答案 2 :(得分:1)

在这个例子中,这两个没有区别。

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堆中......

答案 3 :(得分:0)

  

据我所知,使用“new”会创建一个独特的对象,但使用一个对象有什么好处?

两个构造完全相同(但使用不同的数据):创建一个数组并用数据填充它。特别是,这两个数组都是“唯一对象”。

如果在编译时不知道元素的大小和初始值,则使用“less literal”。

答案 4 :(得分:0)

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

它们只是创建数组的两种不同方式。这里没有涉及任何OOP。

当您事先知道值时,第一个更好,否则第二个更好。

答案 5 :(得分:0)

第一个语句称为数组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);

答案 6 :(得分:0)

我认为结果是一样的。

但是当您使用“new”子句创建数组时,您应该指定数组的指定长度。

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

在此示例中,您还可以为b [5]指定值。不应该产生编译错误。但是错误应该在运行时发生。

关于另一种方法,不需要指定数组的长度。它取决于数组的元素数。