java字符串数组初始化和赋值
2015-04-20 23:20
393 查看
//一维数组
String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组
String[] str = new String[]{"","","","",""};
String[] str = {"","","","",""};
String数组初始化区别
首先应该明白java数组里面存的是对象的引用,所以必须初始化才能用;
String[] str = {"1","2","3"}与String[] str = newString[]{"1","2","3"}在内存里有什么区别?
编译执行结果没有任何区别。更不可能像有些人想当然说的在栈上分配空间,Java的对象都是在堆上分配空间的。
这里的区别仅仅是代码书写上的:
String[] str = {"1","2","3"}; 这种形式叫数组初始化式(ArrayInitializer),只能用在声明同时赋值的情况下。
而 String[] str = new String[]{"1","2","3"}是一般形式的赋值,=号的右边叫数组字面量(ArrayLiteral),数组字面量可以用在任何需要一个数组的地方(类型兼容的情况下)。如:
String[] str = {"1","2","3"}; // 正确的
String[] str = new String[]{"1","2","3"} // 也是正确的
而
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 s=new String[30];
如果没有显式赋值,则系统自动赋默认值null。
PS:
笔者所犯错误为在初始化数组的时候定义为String[] str = newString[]{},如此定义相当于创建了创建一个长度为0的String(字符串)型的一维数组。在后期为其赋值的时候str[0]="A",就会抛出异常。
String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组
String[] str = new String[]{"","","","",""};
String[] str = {"","","","",""};
String数组初始化区别
首先应该明白java数组里面存的是对象的引用,所以必须初始化才能用;
String[] str = {"1","2","3"}与String[] str = newString[]{"1","2","3"}在内存里有什么区别?
编译执行结果没有任何区别。更不可能像有些人想当然说的在栈上分配空间,Java的对象都是在堆上分配空间的。
这里的区别仅仅是代码书写上的:
String[] str = {"1","2","3"}; 这种形式叫数组初始化式(ArrayInitializer),只能用在声明同时赋值的情况下。
而 String[] str = new String[]{"1","2","3"}是一般形式的赋值,=号的右边叫数组字面量(ArrayLiteral),数组字面量可以用在任何需要一个数组的地方(类型兼容的情况下)。如:
String[] str = {"1","2","3"}; // 正确的
String[] str = new String[]{"1","2","3"} // 也是正确的
而
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 s=new String[30];
如果没有显式赋值,则系统自动赋默认值null。
PS:
笔者所犯错误为在初始化数组的时候定义为String[] str = newString[]{},如此定义相当于创建了创建一个长度为0的String(字符串)型的一维数组。在后期为其赋值的时候str[0]="A",就会抛出异常。
相关文章推荐
- Java字符串数组初始化和赋值
- java字符串数组初始化和赋值
- JAVA 字符数组的键盘输入赋值与初始化赋值的运算与输出
- Java中字符串定义,初始化,赋值为null的区别
- 字符数组(C风格字符串)的初始化和赋值
- 字符数组(C风格字符串)的初始化和赋值
- 关于字符串数组赋值的问题--java.lang.NullPointerException异常
- java语法:字符串数组的赋值
- java数组(定义、赋值和初始化)
- 字符串初始化与数组越界问题。
- (Java 功能篇) java 字符串数组筛选重复数据
- Java 对象,数组 与 JSON 字符串 相互转化
- java String字符串转成json数组并且遍历
- 数组的初始化方式--Java基础030
- java基本类型数组初始化
- Java数组定义赋值及switch的使用
- js 数组赋值和java数组赋值
- Java字符数组转化成字符串
- java笔记之数组的概念、声明、初始化、访问方式、复制和动态扩展算法以及递归
- 重新认识memset函数及c++中数组的初始化赋值