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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Ticket implements Runnable//extends Thread
  2. {
  3.         private  int tick =100;
  4.         //Object obj = new Object();
  5.         public void run()
  6.         {
  7.                
  8.                 while (true)
  9.                 {
  10.                        
  11.                        
  12.                         if (tick>0)
  13.                        
  14.                                 try
  15.                         {
  16.                                 Thread.sleep(10);
  17.                         }
  18.                                 catch (Exception e)
  19.                         {
  20.                         }
  21.                                 System.out.println(Thread.currentThread().getName()+"sale :  "+tick--);
  22.                                
  23.                         }
  24.                        
  25.                 }
  26.                        
  27.                        
  28.         }
  29. }
  30. class  TicketDemo2
  31. {
  32.         public static void main(String[] args)
  33.         {
  34.                 Ticket  t=new Ticket();

  35.             Thread t1 = new Thread(t);
  36.         Thread t2 = new Thread(t);
  37.                 Thread t3 = new Thread(t);
  38.                 Thread t4 = new Thread(t);
  39.                 t1.start();
  40.                 t2.start();
  41.                 t3.start();
  42.                 t4.start();
  43.         }
  44. }
复制代码
我把if的{}去掉,就出现如图的结果,加{}和不加{}怎么出现截然不同的结果???

QQ截图20140417112957.png (9.96 KB, 下载次数: 5)

QQ截图20140417112957.png

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

3 个回复

倒序浏览
1,如果if带{}当符合条件,执行{}里的所有内容
2,如果if不带{}符合条件,只执行if后面的一行代码
3,合成一句话就是,如果你的if 代码块中只有一行代码 {}可以省略不写
你的代码,去掉和不去掉的代码分别是一下两种情况
  1. //{}未省略
  2. while (true)   {
  3.           if (tick>0){
  4.                   try{ Thread.sleep(10);}catch (Exception e){}   
  5.               System.out.println(Thread.currentThread().getName()+"sale :  "+tick--);
  6.         }
  7. }
  8. //{}省略
  9. while (true)   {
  10.        if (tick>0)
  11.        try{ Thread.sleep(10);}catch (Exception e){}   //只有这行代码属于if 条件代码块里的

  12.        System.out.println(Thread.currentThread().getName()+"sale :  "+tick--);//这行则属于if代码块以外
  13.    
  14.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报 1 0
楼上说得对!
回复 使用道具 举报
if后面加{},表示{}里面的内容都是if里面的。
if后面不加{},if就只执行if后面的一句话。
所以如果,if后面只接一句话的话加{}和不加{}是没有区别的。
  1. if(x<10)
  2.        System.out.print(x);

  3. if(x<10)
  4. {
  5.    System.out.println(x);
  6. }
  7. 是一样的

  8.      
复制代码


但是如果if后面有不止一句话时,就是2种不同的情况。
上面的哥们也说了,我也不废话了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马