有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java循环和IFT语句的装箱

这个代码示例应该在应用程序启动后大约一秒钟打印出文本“将永远不会被打印”,但是文本如何表示这永远不会发生

也许是因为我的方块打得不正确,但我不认为这是原因

class ThreadTest
{
    public static boolean b = false;

    public static void main(String args[]){

        new Thread(){
            @Override public void run(){
                try{
                    Thread.sleep(1000);
                }
                catch(Exception e){}

                b = true;
            }
        }.start();


        while(true)
            if(b)
            {
                System.out.println("will never be printed");
                break;
            }
}

}

请说这是否真的很疯狂,或者我只是犯了个大错误

看起来没人读过这个问题。问题是,行“永远不会被打印”应该在一秒钟后打印,但它不是。你们都只是在写一些和这个问题毫无关系的东西。 再说一遍:为什么不执行这一行

System.out.println("will never be printed");    

共 (4) 个答案

  1. # 1 楼答案

    在这种情况下,他们是平等的。但后者更适合于可读性

    if(a)
       while(b)
         if(c) {
    
         } 
    

    就像:

    if(a) {
        while(b) {
          if(c) {
    
         }
       }
    }
    

    但是

    if(a)
       blabla;
       while(b)
         if(c) {
    
         } 
    

    不是像:

    if(a) {
       blabla;
       while(b)
         if(c) {
    
         } 
    }
    
  2. # 2 楼答案

    这两种情况是相同的,但如果你有,情况就不同了,例如:

    top:
    while(true)
        if(...)
            while(...)
                if(...)
                {
                    //code
                    break top;
                }
            //more code
    

    相比于

    top:
    while(true)
    {
        if(...)
        {
            while(...)
            {
                if(...)
                {
                    //code
                    break top;
                }
            }
    
            // more code
        }
    }
    

    当然,正如大家所说,第二个问题也更清楚。我建议你总是在它们自己的一行中使用“{”和“}”,在打开它们的语句的同一列中

    例如:

    像那样

    if(condition)
    {
       //code
    }
    

    不是

    if(condition){
      code
    }
    

    当然不是

       if(condition)
       {
         // code
    }
    
  3. # 3 楼答案

    没有区别,但第二个更清楚

  4. # 4 楼答案

    在这种情况下,它们都是相等的,但我们更喜欢使用大括号,即使条件语句只有一条语句,以避免出现一些调试问题,这些问题可能会伴随非常小的错误

    这样一来,第一个代码等于第二个代码

    top:
    while(true)  // Had only one if statement
        if(...)  // Had only one while statement
            while(...)  // Had only one if statement
                if(...)  // It can have more code since it uses braces
                {
                    //code
                    break top;
                }
    

    由于编译器会在编译时自动添加大括号,因此它会在反编译时成为您的第二个代码