string数组怎么定义
这⾥是IT修真院分享课,今天要分享的主题是
【string数组怎么定义】
string数组的定义有三种:
String arr[] = new String[10]; //创建⼀个长度为10的String 类型数组。
String arr[] = {“张三”,“李四”};
String[] str = new String[]{"","","","",""};
String arr[] = {“张三”,“李四”}与String[] str = new String[]{"","","","",""}在内存⾥有什么区别?
编译执⾏结果没有任何区别。更不可能像有些⼈想当然说的在栈上分配空间,Java的对象都是在堆上分配空间的。
这⾥的区别仅仅是代码书写上的:
String[] str = {“1”,“2”,“3”};
这种形式叫数组初始化式(Array Initializer),只能⽤在声明同时赋值的情况下。
⽽ String[] str = new String[]{“1”,“2”,“3”} 是⼀般形式的赋值,=号的右边叫数组字⾯量(ArrayLiteral),数组字⾯量可以⽤在任何需要⼀个数组的地⽅(类型兼容的情况下)。如:
String[] str = {“1”,“2”,“3”}; // 正确的
String[] str = new String[]{“1”,“2”,“3”} // 也是正确的
//⽽java定义一维数组并赋值
String[] str;
str = {“1”,“2”,“3”}; // 编译错误
因为数组初始化式只能⽤于声明同时赋值的情况下。
改为:
String[] str;
str = new String[] {“1”,“2”,“3”}; // 正确了
//⼜如:
void f(String[] str) {
}
f({“1”,“2”,“3”}); // 编译错误
//正确的应该是:
f(new String[] {“1”,“2”,“3”});
注意:初始化数组的时候定义为String[] str = new String[]{},如此定义相当于创建了创建⼀个长度为0的String(字符串)型的⼀维数组。在后期为其赋值的时候str[0]=“A”,就会抛出异常。
还有种特殊的
String…
类型后⾯三个点的写法,是从Java 5开始,Java语⾔对⽅法参数⽀持⼀种新写法,叫可变长度参数列表,其语法就是类型后跟…,表⽰此处接受的参数为0到多个Object类型的对象,或者是⼀个Object[]。
例如我们有⼀个⽅法叫做test(String…strings),那么你还可以写⽅法test(),但你不能写test(String[] strings),这样会出编译错误,系统提⽰出现重复的⽅法。 在使⽤的时候,对于test(String…strings),你可以直接⽤test()去调⽤,标⽰没有参数,也可以⽤去
test(“aaa”),也可以⽤test(new String[]{“aaa”,”bbb”})。 另外如果既有test(String…strings)函数,⼜有test()函数,我们在调⽤test()时,会优先使⽤test()函数。只有当没有test()函数式,我们调⽤test(),程序才会⾛test(String…strings)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论