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小白一个,感谢大家解答。 展开
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小白一个,感谢大家解答。 展开
5个回答
展开全部
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";
//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";
展开全部
你的这个程序的问题不在于你用的单引号还是双引号,而你在drawBroad()函数里多了一个初始化的步骤:
broad = new String[BROAD_SIZE][BROAD_SIZE];
这个语句重新将你赋值为“*”的broad这个数组又重新进行了一个初始化,这样原来有的值就被替换为了String的默认值“null”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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方法中第一句话 重新给数组创建了对象 把原来你给创建的对象覆盖了
所以打印全为空!
如上 注释掉就可以达到你想要的效果了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的问题是你在实例化二原数组broad的时候在函数里面实例化的。给你详细解释一下:
首先,你声明的private string [][] broad 只是一个变量,没有实例化。
然后你initBroad()中对broad实例化并且赋值了,那么broad这个变量指向的实体的地址就有了,在访问broad这个地址的时候就会访问其中的实例。
你在drawBroad()又一次进行了一次实例化,在调用这个函数的时候,broad变量就会指向新new出来的实例地址,而iniBroad()实例的实例(你已经赋值了),就没有用了,只能等待垃圾回收了。
所以,你知道在iniBroad中实例化一次并赋值,在drawBroad中直接打印就好了。
单引号是字符char类型值形式,里面只有一个字母或者其他。双引号是字符串的值形式,双引号里的值就是字符串内容
首先,你声明的private string [][] broad 只是一个变量,没有实例化。
然后你initBroad()中对broad实例化并且赋值了,那么broad这个变量指向的实体的地址就有了,在访问broad这个地址的时候就会访问其中的实例。
你在drawBroad()又一次进行了一次实例化,在调用这个函数的时候,broad变量就会指向新new出来的实例地址,而iniBroad()实例的实例(你已经赋值了),就没有用了,只能等待垃圾回收了。
所以,你知道在iniBroad中实例化一次并赋值,在drawBroad中直接打印就好了。
单引号是字符char类型值形式,里面只有一个字母或者其他。双引号是字符串的值形式,双引号里的值就是字符串内容
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个方法里边你又从新new了一个broad数组,你的赋值并没有问题,但是你重新定义数组的话相当于没有赋值,把drawBroad()方法里边的broad = new String[BROAD_SIZE][BROAD_SIZE];这句话删掉就行了。
单引号是字符char类型值,双引号是字符串
单引号是字符char类型值,双引号是字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询