A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 万琪 金牌黑马   /  2013-6-26 16:30  /  1792 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 2013-6-27 13:56 编辑

刚刚翻老毕的cods,,发现的,,请看

  1. class Res {
  2.         String name;
  3.         String sex;
  4.         boolean flag = false;
  5. }

  6. class In implements Runnable {
  7. <font color="#ff00ff">        Res r;</font>
  8.         @Override
  9.         public void run() {
  10.                 // TODO Auto-generated method stub
  11.                 {
  12.                         int x = 0;
  13.                         while(true)
  14.                         {
  15.                                 synchronized(r)
  16.                                 {

  17.                                         if(<font color="#ff00ff">r.flag</font>)<font color="#ff00ff">  //不用实例化?那r是不是就是
  18. boolean flag = false; 呢???//不现实,,往下看</font>
  19.                                                 try{r.wait();}catch(Exception e){}
  20.                                         if(x==0)
  21.                                         {
  22.                                                 r.name="mike";
  23.                                                 r.sex="man";
  24.                                         }
  25.                                         else
  26.                                         {
  27.                                                 r.name="丽丽";
  28.                                                 r.sex = "女女女女女";
  29.                                         }
  30.                                         x = (x+1)%2;
  31.                                         r.flag = true;
  32.                                         r.notify();
  33.                                 }
  34.                         }
  35.                 }
  36.         }

  37. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 神马都是浮云

查看全部评分

7 个回复

倒序浏览
。。。怎么消失了???
回复 使用道具 举报
重写吧。。。

来个反例:
Res r ;
r.flag = true ; //提示未初始化


Res r;
if(r.flag)//提示未初始化
{}



那么未初始化的变量r到底指向哪里呢???


为什么,,
回复 使用道具 举报
这个程序一运行就出空指针异常了,其实跟你下边写的反例一样的,没有初始化的变量r里应该什么都没有,还没有给他分配对象地址,所以调用就出错。这个程序eclipse竟然没有提示未初始化

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 赞一个!

查看全部评分

回复 使用道具 举报
好吧。。老毕这个碉堡了,,

他定义在main里了,,一般人找不到啊
  1. public class Ts {
  2.         public static void main(String[] args) {
  3.                 Res r = new Res();

  4.                 Input in = new Input(r);
  5.                 Output out = new Output(r);
复制代码
回复 使用道具 举报
flag初始化是false啊 成员变量啊
回复 使用道具 举报
万琪 金牌黑马 2013-6-26 18:40:51
7#
王靖远 发表于 2013-6-26 18:33
flag初始化是false啊 成员变量啊

嗯~~ 不是这个问题
回复 使用道具 举报
必须有实例对象啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马