我在java中更新鲜,我对java有疑问
String array= new String[]{};
String array=new String[];
和String array=new String[]{};
String array=new String[10]{};
时出错了为什么?
帮助我,我很困惑。答案 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}})在一个陈述中。两者都无法设定。
<强>另外强>
数组应该在语句的开头定义为给定类型的数组,如array
。 String[] 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)
T[]
int
常量或int
表达式,请参阅下面的n
)T[]
的变量都有一个只读字段:length
和一个索引运算符[int]
,用于读取/写入某些索引的数据。1。
String[] array= new String[]{};
{}这里有什么用途?
它使用{ }
之间的值初始化数组。在这种情况下为0个元素,因此array.length == 0
和array[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
的数组