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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庄星睿 中级黑马   /  2012-6-22 12:54  /  1231 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 庄星睿 于 2012-6-23 11:46 编辑

多线程这块想不通了,切换执行x=x++%2; 程序标注了
  1. class Resource
  2. {
  3. String name;
  4. String sex;
  5. }
  6. class Input implements Runnable
  7. {
  8. private Resource res;
  9. Input(Resource res)
  10. {
  11. this.res=res;
  12. }
  13. public void run()
  14. {
  15. int x=0;
  16. while(true)
  17. {
  18. if (x==0)
  19. {
  20. res.name="MIKE";
  21. res.sex="man";
  22. }
  23. else
  24. {
  25. res.name="丽丽莉莉";
  26. res.sex="女";
  27. }
  28. x=x++%2;   //这里视频里说可以写成这样,但这样写,程序就失去了切换的功能了。可以执行试一下。
  29. //x=++x%2;  //下面这两种写法均没问题
  30. //x=(x+1)%2;  //这里是视频的写法
  31. }
  32. }

  33. }

  34. class Output implements Runnable
  35. {
  36. private Resource res;
  37. Output(Resource res)
  38. {
  39. this.res=res;
  40. }
  41. public void run()
  42. {
  43. while(true)
  44. {
  45. System.out.println(Thread.currentThread().getName()+"...."+res.name+"...."+res.sex);
  46. }
  47. }
  48. }

  49. class InputOutputDemo
  50. {
  51. public static void main(String[] args)
  52. {
  53. Resource res=new Resource();
  54. Input in=new Input(res);
  55. Output out=new Output(res);
  56. Thread t1=new Thread(in);
  57. Thread t2=new Thread(out);
  58. t1.start();
  59. t2.start();
  60. //System.out.println("Hello World!");
  61. }
  62. }
复制代码
int x=0;
while(true)
{
    if(x==0)
       {}
    else
      {}
   x=x++%2;

}
这里x=x++%2应该和x=(x+1)%2 、x=++x%2都是一样的啊,++运算符的优先级不是高于 %吗?
赋值运算符=的优先级不是最后的吗?这里为什么不能实现呢?想不通了,求解?

就相当于这样
class Test
{
public static void main(String[] args)
{
  int x=0;
  while(true)
  {
   if (x==0)
   {
    System.out.println("true");
   }
   else
   {
    System.out.println("false");
   
   }
   x=(x++)%2;   //加了括号也不行
   //x=++x%2;
   //x=(x+1)%2;
  
  }
  
}
}
返回结果依然都是true
想通了,就好像x=x++,x的值永远都不会变的,呵呵

2 个回复

倒序浏览
28.x=(x++)%2;
回复 使用道具 举报
黑马刘洋 发表于 2012-6-22 12:56
28.x=(x++)%2;

试过了,实际上就这样
class Test
{
        public static void main(String[] args)
        {

                int x=0;
                while(true)
                {
                        if (x==0)
                        {
                                System.out.println("true");
                        }
                        else
                        {
                                System.out.println("false");
                       
                        }
                        x=(x++)%2;
                        //x=++x%2;
                        //x=(x+1)%2;
               
                }
               
        }
}


返回依然都是ture
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马