java二维数组的问题,还有单引号和双引号的区别?

代码如下,问什么我向一个二维数组里面赋值,打印出来为空?importjava.util.*;publicclassTestYuan{privateString[][]br... 代码如下,问什么我向一个二维数组里面赋值,打印出来为空?
import java.util.*;
public class TestYuan
{
private String[][] broad;
private static int BROAD_SIZE=10;
public void initBroad()
{
broad = new String[BROAD_SIZE][BROAD_SIZE];
for( int i = 0 ; i < BROAD_SIZE ; i++ )
{
for( int j = 0; j < BROAD_SIZE ; j++ )
{
broad[i][j] = "*";//问题在这,我向这个数组赋值,但是打印出来值为空,是为什么
}
}
}

public void drawBroad()
{
broad = new String[BROAD_SIZE][BROAD_SIZE];
for( int i = 0 ; i < BROAD_SIZE ; i++ )
{
for( int j = 0 ; j < BROAD_SIZE ; j++ )
{
System.out.print(broad[i][j]);//在此打印结果为NULL
}
System.out.print("\n");
}
}

public static void main(String[] args) throws Exception
{
TestYuan ty = new TestYuan();
ty.initBroad();
ty.drawBroad();
}
}

还想问一个问题双引号和单引号的区别?
java小白一个,感谢大家解答。
展开
 我来答
闲来笛声
2013-06-18 · TA获得超过211个赞
知道答主
回答量:49
采纳率:0%
帮助的人:39.2万
展开全部
public void drawBroad() {
//broad = new String[BROAD_SIZE][BROAD_SIZE];//这一句对broad重新进行了初始,所以initBroad()中对broad的赋值就没了
for( int i = 0 ; i < BROAD_SIZE ; i++ ) {
for( int j = 0 ; j < BROAD_SIZE ; j++ ) {
System.out.print(broad[i][j]);//在此打印结果为NULL
}
System.out.print("\n");
}
}

char类型的值用单引号引起来的单个字符
如: char c = 'a';
String类型的值用双引号
如 string s = "abc";
string s = "a";
刘_志佳
2013-06-18 · TA获得超过1325个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:245万
展开全部

你的这个程序的问题不在于你用的单引号还是双引号,而你在drawBroad()函数里多了一个初始化的步骤:

 broad = new String[BROAD_SIZE][BROAD_SIZE];

这个语句重新将你赋值为“*”的broad这个数组又重新进行了一个初始化,这样原来有的值就被替换为了String的默认值“null”。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酒意何存
2013-06-18 · 超过51用户采纳过TA的回答
知道答主
回答量:123
采纳率:100%
帮助的人:79.6万
展开全部
 public void drawBroad()     {

//   broad = new String[BROAD_SIZE][BROAD_SIZE];         

   for( int i = 0 ; i < BROAD_SIZE ; i++ ) { 

    for( int j = 0 ; j < BROAD_SIZE ; j++ ) { 

     System.out.print(broad[i][j]);//在此打印结果为NULL

    }               

    System.out.print("\n");         

   }    

 }

drawBroad方法中第一句话 重新给数组创建了对象  把原来你给创建的对象覆盖了

所以打印全为空!

如上   注释掉就可以达到你想要的效果了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
简简512
2013-06-18 · 超过14用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:41.3万
展开全部
你的问题是你在实例化二原数组broad的时候在函数里面实例化的。给你详细解释一下:

首先,你声明的private string [][] broad 只是一个变量,没有实例化。
然后你initBroad()中对broad实例化并且赋值了,那么broad这个变量指向的实体的地址就有了,在访问broad这个地址的时候就会访问其中的实例。

你在drawBroad()又一次进行了一次实例化,在调用这个函数的时候,broad变量就会指向新new出来的实例地址,而iniBroad()实例的实例(你已经赋值了),就没有用了,只能等待垃圾回收了。

所以,你知道在iniBroad中实例化一次并赋值,在drawBroad中直接打印就好了。
单引号是字符char类型值形式,里面只有一个字母或者其他。双引号是字符串的值形式,双引号里的值就是字符串内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shouhuang211
2013-06-18 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:101万
展开全部
第二个方法里边你又从新new了一个broad数组,你的赋值并没有问题,但是你重新定义数组的话相当于没有赋值,把drawBroad()方法里边的broad = new String[BROAD_SIZE][BROAD_SIZE];这句话删掉就行了。
单引号是字符char类型值,双引号是字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式