| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 625 人关注过本帖
标题:2维数组的问题
只看楼主 加入收藏
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
 问题点数:0 回复次数:7 
2维数组的问题
我想大家都知道数组附值

String[] s = {\"a\",\"b\"};

以上代码是没有问题的。

那么来看一下以下代码

public class Test {
public static void main (String[] args) {
String[][] str = new String[4][];

// str[0] = {\"a\",\"b\"};

str[0] = new String[2];
str[0][0] = \"a\";
str[0][1] = \"b\";
}
}


类中注释掉的那句报错,只能用下面的那种语句进行附值,那么注释掉的那句跟上面的代码有何不同?为何会报错?
搜索更多相关主题的帖子: 语句 注释 
2006-09-18 10:39
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

如果改成str[0]=new String[]{"a","b"};
就不会报错了.
因为数组是不可变的,除非你为它重新分配内存空间
一开始str就被声明为一个二维的数组,这时,只是把第一维声明为长度为4,而第二维却没有声明
这个时候要为第二维赋值就必须为它 new一个空间出来,而不能直接把数组的内容写入它里面
你这个试试,是可以通过的
String[] other={"a","b"};
str[0]=other;


可惜不是你,陪我到最后
2006-09-18 11:14
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
如果你再对other或者str[0]赋值你就只能根据下标来赋了
不能再用大括号来赋了
other={"aa","bb"};
这样会报错,但是如果
other=new String[]{"aa","bbb"};
这样却不会报错,因为new字告诉编译器,要重新分一块内存给other数组用了
所以,它可以再定大小

可惜不是你,陪我到最后
2006-09-18 11:16
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 

原来这样的啊,我以为根据定义1维数组那样就可以了。。
但我String[][] str = new String[4][5];这样定义后,str[0] = {"a","b"};这样还是会报错呢……难道说这样的分配空间还是不行?


向着软件工程师的目标前进!
2006-09-18 12:25
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
以下是引用飘飘叶子在2006-9-18 12:25:17的发言:

原来这样的啊,我以为根据定义1维数组那样就可以了。。
但我String[][] str = new String[4][5];这样定义后,str[0] = {"a","b"};这样还是会报错呢……难道说这样的分配空间还是不行?

这样当然还会报错,因为你已经给你的第二维数组定义为长度为5了,
向大括号的赋值方法只能用于刚刚申请空间的时候赋值


可惜不是你,陪我到最后
2006-09-18 12:34
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 

也就是说str[0] = {"a","b"};这个只能用在1维数组的附值上……
明白了……谢谢~


向着软件工程师的目标前进!
2006-09-18 13:08
fancyboy5150
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-9-8
收藏
得分:0 

真的受教了
非常感谢二位

2006-09-18 13:14
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
以下是引用飘飘叶子在2006-9-18 13:08:30的发言:

也就是说str[0] = {"a","b"};这个只能用在1维数组的附值上……
明白了……谢谢~

二维也能赋的
String[][] str={{"a","b"},{"ab","cd"}};


可惜不是你,陪我到最后
2006-09-18 13:16
快速回复:2维数组的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012240 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved