class CC
{
public static void main(String[] args)
{
int i,j;
for (i=1;i<=5 ;i++ )
{
for (j=1;j<=5 ;j++ )
{
System.out.print("*"+"\t");
}
System.out.println("*");
}
System.out.println(i);
System.out.println(j);
}
}为什么上面这个程序在编译时出错,提示"可能尚未初始化变量 j"class C
{
public static void main(String[] args)
{
int j;
for (j=1;j<=5 ;j++ )
{
System.out.print("*"+"\t");
}
System.out.println(j);
}
}而为什么上面这个程序在编译时却可以通过呢谢谢大家了!
{
public static void main(String[] args)
{
int i,j;
for (i=1;i<=5 ;i++ )
{
for (j=1;j<=5 ;j++ )
{
System.out.print("*"+"\t");
}
System.out.println("*");
}
System.out.println(i);
System.out.println(j);
}
}为什么上面这个程序在编译时出错,提示"可能尚未初始化变量 j"class C
{
public static void main(String[] args)
{
int j;
for (j=1;j<=5 ;j++ )
{
System.out.print("*"+"\t");
}
System.out.println(j);
}
}而为什么上面这个程序在编译时却可以通过呢谢谢大家了!
先明确下局部变量的内存分配:
局部变量,由声明在某方法,或某代码段里(比如for循环),执行到它的时候或者说初始化后在栈中开辟内存,并存放初始值,当局部变量一但脱离作用域,内存立即释放。
因为for (j=1;j <=5 ;j++ )嵌套在for (i=1;i <=5 ;i++ ) 循环里面,所以作为循环体的局部变量,j的初始化只是在for (i=1;i <=5 ;i++ ) 循环体里有效,出了循环体就无效了。for (i=1;i <=5 ;i++ )每次循环结束,j就释放内存空间,下次循环开始时j重新分配一次内存,所以前后j进行了5次内存分配,而出了for (i=1;i <=5 ;i++ )循环体后,j其实只是得到声明,并没有赋初始值,所以没有分配到内存空间,因而编译器报j未初始化的错。而如果在声明j的时候就将其初始化,j获得内存分配,且在整个main()中j都是占用这块内存不变,j循环语句中操纵的也是这块内存。
以上纯属浅见,还望高人指点!class CC
{
public static void main(String[] args)
{
int i;
int j;
//int j = 2;
for (i=1;i <=5 ;i++ )
{
for (j=1;j <=5 ;j++ )
{
System.out.print("*"+"\t");
}
System.out.println("*");
System.out.println();
System.out.println(j);
}
System.out.println(i);
//System.out.println(j);
}
}
只有类的成员变量可以不用在定义的时候就初始化,
你的i,j是局部变量不初始化会有问题的。
所以就出现可能出错
i,j都是全局变量。而且i没问题只有j在输出的时候会报错
方法里的变量在执行完成后变量的空间会被收走,for循环里也是这样的,在这个两层循环中内层循环j先结束,结束了内存中的空间就没了,而i在判断6<=5后空间还没来得及被收走,所以i能访问到j访问不到。
[color=#FF00FF]我也是初学者,与楼主共勉![/color]
class cc {
public static void main(String[] args)
{
int i,j = 0; //这样就好了
for (i=1;i <=5 ;i++ )
{
for (j=1;j <=5 ;j++ )
{
System.out.print("*"+"\t");
//System.out.println(j); //把=0删了 在循环里你试试,把/ /去了
}
System.out.println("*");
}
System.out.println(i);
System.out.println(j);//要不j=0 你不在那个FOR循环里j的值系统用完就扔了,现在j就是个空的
}
}
class CC
{
static int i,j;
public static void main(String[] args)
{
for ( i=1;i<=5 ;i++ )
{
for ( j=1;j<=5 ;j++ )
{
System.out.print("*"+"\t");
}
System.out.println("*");
}
System.out.println(i);
System.out.println(j);
}
}