String数组初始化 静态vector初始化

近日,笔者在java编程中因为疏忽对String数组的初始化定义错误,导致程序运行出错。现将所理解的String数组在此进行说明,并对String数组初始化进行分析。

//一维数组
String[] str = new String[5]; //创建一个长度为5的String(字符串)型的一维数组
String[] str = new String[]{"","","","",""};
String[] str = {"","","","",""};
//二维数组
String[][] str = new String[2][2]; //创建一个2行2列的二维数组

String数组初始化区别
  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) {
String数组初始化 静态vector初始化
  }
  f({"1","2","3"}); // 编译错误
正确的应该是:
  f(new String[] {"1","2","3"});

PS:
  笔者所犯错误为在初始化数组的时候定义为String[] str = newString[]{},如此定义相当于创建了创建一个长度为0的String(字符串)型的一维数组。在后期为其赋值的时候str[0]="A",就会抛出异常。

  

爱华网本文地址 » http://www.aihuau.com/a/25101018/371935.html

更多阅读

C#变长数组二 c 数组长度 变量

首先声明,这不是我写的,只是我看对你有用才贴上来的1、什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素实现了IColle

C#的动态数组 c 动态数组的用法

在使用数组的过程中,有时候希望数组的长度和元素个数能随程序的运行不断改变,但改变一次就要重新开辟一个新的数组对象,这样将占用内存空间。为了解决这个问题,Microsoft.NET Framework 体统了一个ArrayList类,专门用于处理可按动态增减

js,jquery,数组操作小结 jquery 二维数组操作

----------------------------------------------------------定义数组----------------------------------------------------------$(function(){var aArray = {};//定义一个数组aArray['name'] = "张三";aArray['sex'] = "男";aA

声明:《String数组初始化 静态vector初始化》为网友無極卍盜分享!如侵犯到您的合法权益请联系我们删除