java局部变量赋值

朽木可雕 2010-04-05 10:14:23


class T
{
private int a = 0;
}
public class Test
{
private void test()
{
T t;//don't value
}

public static void main(String [] args)
{
Test t = new Test ();
t.test();
}
}



最近看java知识的时候说java的局部变量必须初始化,赋初值...为什么这个编译可以通过呢.
...全文
430 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongyucai 2010-04-05
  • 打赏
  • 举报
回复
只要你不用这个局部变量编译器就会不理这个变量的......................
dbx915 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pang68599 的回复:]
我们老师上课说,局部变量不初始化会出错。。我一个晕。弄了半天现在知道了
[/Quote]
局部变量如果没有使用不初始化,编译是可以通过的;如果使用了,不初始化是会出错的
tdgwj 2010-04-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pang68599 的回复:]
我们老师上课说,局部变量不初始化会出错。。我一个晕。弄了半天现在知道了
[/Quote]是老师讲得不好 还是你不仔细听课呢
tdgwj 2010-04-05
  • 打赏
  • 举报
回复
局部变量不会初始化是没错
你没有使用该值 当然不会报错了
朽木可雕 2010-04-05
  • 打赏
  • 举报
回复
我们老师上课说,局部变量不初始化会出错。。我一个晕。弄了半天现在知道了
justlearn 2010-04-05
  • 打赏
  • 举报
回复
你搞错了,是局部变量不会自动初始化,只要你没有用t这个引用,就不会有问题,在你使用这个变量前,必须初始化。这里,你并没有使用它。
而成员变量,在你的程序中private int a = 0;,这个可以选择不初始化,java会自动帮你初始化成初始值0
duyu1025 2010-04-05
  • 打赏
  • 举报
回复
不知道你写的是什么意思,Test类里的test()方法。。。

如果你没有 赋初值 编译的时候会按照规则自动赋初值


class T
{
public int a;
}
public class Test
{

public static void main(String [] args)
{
Test t = new Test ();
System.out.println(t.a);
}
}

wd9053 2010-04-05
  • 打赏
  • 举报
回复
局部变量必须初始化是说在第一次使用它之前必须初始化,如果你不用它,编译器自然不会管你
class T
{
private int a = 0;
void print()
{
System.out.println("do something");
}
}
public class Test
{
private void test()
{
T t;//don't value
t.print();//可能尚未初始化变量 t
int a;
System.out.println(a);//可能尚未初始化变量 a
}


public static void main(String [] args)
{
Test t = new Test ();
t.test();
}
}

62,621

社区成员

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

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