关于JAVA中对象数组初始化的问题

blue7wings 2013-03-16 02:35:58
JAVA中的对象数组到底是怎么初始化的?是通过类的构造函数来初始化的么?看了网上很多教程都没看懂,希望大神能举个例子,给我解释说明下。谢谢了。。
...全文
155 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我非大神,只是菜鸟一个,刚好路过,当创建一个对象数组的时候,比如说 String[] strs = new String[3];使用了new的关键字,不妨将数组整体看成一个对象strs,这时候类比于一个对象的方法的调用,如String str = new String("str"),我们可以调用str.charAt(0);结果返回的是s,即第一个字母,而当我们调用str.charAt(1)和str.charAt(2)的时候返回的分别是t,r;同理,strs是一个String类型的数组对象,strs[0],stsr[1],strs[2],这样相当于str的方法的三次不同的调用,这个很正常,因为我们创建的数组长度就为3,这时候就牵扯到strs[0],stsr[1],strs[2]分别返回什么呢,很显然结果是null,因为我们在创建对象数组时只是指定了长度,而没有给赋值,既然JVM会让你调用strs[0],stsr[1],strs[2],它就必须给你一个结果,而最好的做法是根据一个规则:定义好的类在创建对象时,JVM会给该类的对象类型的成员指定一个缺省值,即初始化,而这个缺省值是一个不知向任何引用的变量null。补充一下,所有对象类型的数组的每一个下标对应的元素初始值都为null,而基本类型的数组,根据各个基本类型的不同而不同
miaowhehe 2013-03-16
  • 打赏
  • 举报
回复
以String类的对象数组举个例子:

// 创建长度为5的String对象数组
// 这5个引用默认都是null,即不指向任何对象
String[] strarr = new String[5];
for (int i = 0; i < 5; i++)
	System.out.print(strarr[i] + " ");
System.out.println();
// 让这5个引用指向新创建的String对象
for (int i = 0; i < 5; i++)
	strarr[i] = new String("str" + i);
for (int i = 0; i < 5; i++)
	System.out.print(strarr[i] + " ");
程序输出:

null null null null null 
str0 str1 str2 str3 str4 

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧