黑马程序员技术交流社区
标题:
==类类型变量不实例化时他调用什么?==
[打印本页]
作者:
万琪
时间:
2013-6-26 16:30
标题:
==类类型变量不实例化时他调用什么?==
本帖最后由 孙百鑫 于 2013-6-27 13:56 编辑
刚刚翻老毕的cods,,发现的,,请看
class Res {
String name;
String sex;
boolean flag = false;
}
class In implements Runnable {
<font color="#ff00ff"> Res r;</font>
@Override
public void run() {
// TODO Auto-generated method stub
{
int x = 0;
while(true)
{
synchronized(r)
{
if(<font color="#ff00ff">r.flag</font>)<font color="#ff00ff"> //不用实例化?那r是不是就是
boolean flag = false; 呢???//不现实,,往下看</font>
try{r.wait();}catch(Exception e){}
if(x==0)
{
r.name="mike";
r.sex="man";
}
else
{
r.name="丽丽";
r.sex = "女女女女女";
}
x = (x+1)%2;
r.flag = true;
r.notify();
}
}
}
}
}
复制代码
作者:
万琪
时间:
2013-6-26 16:31
。。。怎么消失了???
作者:
万琪
时间:
2013-6-26 16:35
重写吧。。。
来个反例:
Res r ;
r.flag = true ; //提示未初始化
Res r;
if(r.flag)//提示未初始化
{}
那么未初始化的变量r到底指向哪里呢???
为什么,,
作者:
薛淑凯
时间:
2013-6-26 17:14
这个程序一运行就出空指针异常了,其实跟你下边写的反例一样的,没有初始化的变量r里应该什么都没有,还没有给他分配对象地址,所以调用就出错。这个程序eclipse竟然没有提示未初始化
作者:
万琪
时间:
2013-6-26 18:13
好吧。。老毕这个碉堡了,,
他定义在main里了,,一般人找不到啊
public class Ts {
public static void main(String[] args) {
Res r = new Res();
Input in = new Input(r);
Output out = new Output(r);
复制代码
作者:
王靖远
时间:
2013-6-26 18:33
flag初始化是false啊 成员变量啊
作者:
万琪
时间:
2013-6-26 18:40
王靖远 发表于 2013-6-26 18:33
flag初始化是false啊 成员变量啊
嗯~~ 不是这个问题
作者:
280270738
时间:
2013-6-26 21:08
必须有实例对象啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2