java中新String [] {}和新String []之间的区别

时间:2013-12-05 09:30:34

标签: java arrays string

我在java中更新鲜,我对java有疑问

String array= new String[]{};
  1. 这里 {} 的用途是什么?
  2. String array=new String[];String array=new String[]{};
  3. 之间有什么区别
  4. 当我写作String array=new String[10]{};时出错了为什么? 帮助我,我很困惑。

7 个答案:

答案 0 :(得分:23)

{}定义数组的内容,在这种情况下它是空的。这些都有三个String s

的数组
String[] array = {"element1","element2","element3"};
String[] array = new String[] {"element1","element2","element3"};

虽然语句的定义方([]的右侧)上的=定义了预期数组的大小,例如:这将有10个位置的数组来放置String s

String[] array = new String[10];

...但是...

String array = new String[10]{};  //The line you mentioned above

错误是因为您定义了一个长度为10([10])的数组,然后定义了一个长度为0({})的数组,并尝试将它们设置为相同的数组引用({{ 1}})在一个陈述中。两者都无法设定。

<强>另外

数组应该在语句的开头定义为给定类型的数组,如arrayString[] array说,将数组值设置为String array = /* array value*/,而不是String的数组。

答案 1 :(得分:10)

String array=new String[];String array=new String[]{};都是java中的无效语句。

它会在您尝试将String array分配给String数据类型时出现错误。 更具体地说,错误就像这个Type mismatch: cannot convert from String[] to String

答案 2 :(得分:6)

您可以选择创建对象数组(而不是基元数组)。

一个选项是指定数组的大小,在这种情况下它只包含大量的空值。

String[] array = new String[10]; // Array of size 10, filled with nulls.

另一个选项是指定数组中的内容。

String[] array = new String[] {"Larry", "Curly", "Moe"};  // Array of size 3, filled with stooges.

但是你不能混合使用这两种语法。选择其中一个。

答案 3 :(得分:3)

TL; DR

  • 必须输入数组变量T[]
    (注意T本身可以是arry类型 - &gt;多维数组)
  • 数组的长度必须通过以下方式确定:
    • 给它一个明确的尺寸
      (可以是int常量或int表达式,请参阅下面的n
    • 初始化数组内的所有值
      (长度是从给定元素隐式计算的)
  • 任何键入T[]的变量都有一个只读字段:length和一个索引运算符[int],用于读取/写入某些索引的数据。

回复

  

1。 String[] array= new String[]{}; {}这里有什么用途?

它使用{ }之间的值初始化数组。在这种情况下为0个元素,因此array.length == 0array[0] throws IndexOutOfBoundsException: 0

  

2。 String array=new String[];String array=new String[]{};

之间的差异是什么?

第一个不会编译有两个原因而第二个不会因为一个原因而编译。常见的原因是变量数组的类型必须是数组类型:String[]而不仅仅是String。忽略那个(可能只是一个错字)的区别是:

new String[]   // size not known, compile error
new String[]{} // size is known, it has 0 elements, listed inside {}
new String[0]  // size is known, it has 0 elements, explicitly sized
  

3。什么时候写String array=new String[10]{};得到错误原因?

(再次,在[]之前忽略丢失的array在这种情况下,你过于急于告诉Java要做什么,而你提供的是相互矛盾的数据。首先,您告诉Java您希望数组中包含10个元素,然后您要通过{}表示您希望数组为空。 只要下定决心并使用其中一个--Java认为。

  

帮助我,我很困惑

实施例

String[] noStrings = new String[0];
String[] noStrings = new String[] { };
String[] oneString = new String[] { "atIndex0" };
String[] oneString = new String[1];
String[] oneString = new String[] { null }; // same as previous
String[] threeStrings = new String[] { "atIndex0", "atIndex1", "atIndex2" };
String[] threeStrings = new String[] { "atIndex0", null, "atIndex2" }; // you can skip an index
String[] threeStrings = new String[3];
String[] threeStrings = new String[] { null, null, null }; // same as previous
int[] twoNumbers = new int[2];
int[] twoNumbers = new int[] { 0, 0 }; // same as above
int[] twoNumbers = new int[] { 1, 2 }; // twoNumbers.length == 2 && twoNumbers[0] == 1 && twoNumbers[1] == 2
int n = 2;
int[] nNumbers = new int[n]; // same as [2] and { 0, 0 }
int[] nNumbers = new int[2*n]; // same as new int[4] if n == 2

(这里,“与”相同意味着它将构造相同的数组。)

答案 4 :(得分:2)

试试这个。

  String[] array1= new String[]{};
  System.out.println(array1.length);
  String[] array2= new String[0];
  System.out.println(array2.length);

注意:new String [] {}之间没有字节代码差异;和新的String [0];

new String[]{}是使用值进行数组初始化。

new String[0];是数组声明(仅分配内存)

new String[10]{};是不允许的,因为new String[10]{ may be here 100 values};

答案 5 :(得分:1)

String array[]=new String[]; and String array[]=new String[]{};

没有区别,这些只是声明数组的不同方式

String array = new String [10] {};得到错误为什么?

这是因为您无法以此格式声明数组的大小。

正确的方法是

String array[]=new String[]{"a","b"};

答案 6 :(得分:1)

1。{的使用:

  

它使用值{}

初始化数组

2。String array = new String [];之间的区别和String array = new String [] {};

  

String array = new String [];和String array = new String [] {};两者都是   Java中的无效语句。

     

它将给您一个错误,您正试图分配String数组   转换为String数据类型。更具体地说,错误就是这种类型   不匹配:无法从String []转换为String

3.String array = new String [10] {};为什么出错?

  

错误,因为您要定义长度为10([10])的数组,然后   定义长度为 String [10] {} 0

的数组