纳闷的一个举动。比如: 
for(int i=0;i<5;i++)
    System.out.println("");
很多人在此时时就不加大括号了。。虽然说这样也没问题。
但是还是加上好吧?大家出来说说。

解决方案 »

  1.   

    for(int i=0;i<5;i++) System.out.println("");
      我觉得,1.不加大括号直接就写在一行。
              2。要不就加大括号。
     ---1是便于直观,缺点是万一你出bug,绝对不好找(比如System前有";")
    2.刚学这个结构时就有{}吧
      

  2.   

    规范规定,如果这里for语句控制的是一条语句,那么可以不加括号;如果控制的是多条语句必须要加上括号才行。所以这里可以随意,没有什么区别的,各人习惯吧
      

  3.   

    必须加上,否则会出现你费劲心思都想不通的编译错误!public class Test {    public static void main(String[] args) {
            for(int i = 0; i <= 10; i++)
                Integer k = new Integer(i);
            System.out.println("hi, everybody!");
        }
    }
      

  4.   


    for  example   please    !!!!!!!
      

  5.   

    规范很重要,不仅是对自己的负责,也是别人的产品的负责。像国外很流行的Python被设计成靠缩进来区分区域的就是为了提醒程序员要注意规范啊!!
      

  6.   



    http://topic.csdn.net/u/20110529/23/1729a6d3-2bdd-4d3f-b9de-f7ed889f9935.html?seed=1025248705&r=73574314#r_73574314
    帖子里链接进来看到这个帖子,解释一下为什么for有{}和没{}会导致定义变量造成编译结果不同如果了解变量的作用域和生命周期这个就容易理解了
    首先如果在{}定义变量,那么变量的生命周期就会在{}中,当{}结束,变量的生命就结束
    那么
            for(int i = 0; i <= 10; i++) // 报错
                Integer k = new Integer(i);  //这样会导致k被重复定义,
                                                 //因为这样k的生命周期没有for的{}限制,
                                                 //被当作是整个程序的作用域处理
                                                 //当下一次进入for时,因为之前的k生命没有结束
                                                 //所以会导致重新定义错误
            
            for(int i = 0; i <= 10; i++) { // 正常
                Integer k = new Integer(i);  //因为k离开了for的{}生命就结束,
                                                 //所以再次进入for的{}可以重新定义,因为是新的一个k
            }
    举个简单的例子
    class Test {
        public void main(String[] args) {
            int i = 0;
            int i = 1; //会导致重复定义,编译失败         //而这样的定义就不会
             {int i = 0;}
            {int i = 1;}
        }
    }其实从严密性来说,加上{}最好,程序可读性比较强,所谓比较直观
      

  7.   

    你这个跟规范没关系的 给你个地址看下吧 http://topic.csdn.net/u/20110529/23/1729a6d3-2bdd-4d3f-b9de-f7ed889f9935.html?75655  想要别人顺利看明白你的代码还是加上的好
      

  8.   

     我觉得有问题啊 一般if就可以不用写  for最好写上 因为for必须要有结束循环的标识
      

  9.   


    谜题55:特创论 
    某些时候,对于一个类来说,跟踪其创建出来的实例个数会非常用有,其典型实现是通过让它的构造器递增一个私有静态域来完成的。在下面的程序中,Creature类展示了这种技巧,而Creator类对其进行了操练,将打印出已经创建的Creature实例的数量。那么,这个程序会打印出什么呢?public class Creator {
        public static void main(String[] args) {
            for (int i = 0; i < 100; i++)
                Creature creature = new Creature();
            System.out.println(Creature.numCreated());
        }
    }class Creature {
        private static long numCreated = 0;
        public Creature() {
            numCreated++;
        }
        public static long numCreated() {
            return numCreated;
        }
    }这是一个捉弄人的问题。该程序看起来似乎应该打印100,但是它没有打印任何东西,因为它根本就不能编译。如果你尝试着去编译它,你就会发现编译器的诊断信息基本没什么用处。下面就是javac打印的东西:Creator.java:4: not a statement
                Creature creature = new Creature();
                ^
    Creator.java:4: ';' expected
                Creature creature = new Creature();
                                ^一个本地变量声明看起来像是一条语句,但是从技术上说,它不是;它应该是一个本地变量声明语句(local variable declaration statement)[JLS 14.4]。Java语言规范不允许一个本地变量声明语句作为一条语句在for、while或do循环中重复执行[JLS 14.12-14]。一个本地变量声明作为一条语句只能直接出现在一个语句块中。(一个语句块是由一对花括号以及包含在这对花括展中的语句和声明构成的。)
    有两种方式可以订正这个问题。最显而易见的方式是将这个声明至于一个语句块中:
    for (int i = 0; i < 100; i++) {
         Creature creature = new Creature();
    }然而,请注意,该程序没有使用本地变量creature。因此,将该声明用一个无任何修饰的构造器调用来替代将更具实际意义,这样可以强调对新创建对象的引用正在被丢弃:for (int i = 0; i < 100; i++) 
         new Creature();无论我们做出了上面的哪种修改,该程序都将打印出我们所期望的100。
    请注意,用于跟踪Creature实例个数的变量(numCreated)是long类型而不是int类型的。我们很容易想象到,一个程序创建出的某个类的实例可能会多余int数值的最大值,但是它不会多于long数值的最大值。int数值的最大值是231-1,即大约2.1×109,而long数值的最大值是263-1,即大约9.2×1018。当前,每秒钟创建108个对象是可能的,这意味着一个程序在long类型的对象计数器溢出之前,不得不运行大约三千年。即使是面对硬件速度的提升,long类型的对象计数器也应该足以应付可预见的未来。还要注意的是,本谜题中的创建计数策略并不是线程安全的。如果多个线程可以并行地创建对象,那么递增计数器的代码和读取计数器的代码都应该被同步:
    // Thread-safe creation counter
    class Creature {
        private static long numCreated;
        public Creature() {
            synchronized (Creature.class) {
                numCreated++;
            }
        }
        public static synchronized long numCreated() {
            return numCreated;
        }
    }或者,如果你使用的是5.0或更新的版本,你可以使用一个AtomicLong实例,它在面临并发时可以绕过对同步的需求。// Thread-safe creation counter using AtomicLong;
    import java.util.concurrent.atomic.AtomicLong;
    class Creature {
        private static AtomicLong numCreated = new AtomicLong();
        public Creature() {
            numCreated.incrementAndGet();
        }
        public static long numCreated() {
            return numCreated.get();
        }
    }请注意,把numCreated声明为瞬时的是不足以解决问题的,因为volatile修饰符可以保证其他线程将看到最近赋予该域的值,但是它不能进行原子性的递增操作。
    总之,一个本地变量声明不能被用作for、while或do循环中的重复执行语句,它作为一条语句只能出现在一个语句块中。另外,在使用一个变量来对实例的创建进行计数时,要使用long类型而不是int类型的变量,以防止溢出。最后,如果你打算在多线程中创建实例,要么将对实例计数器的访问进行同步,要么使用一个AtomicLong类型的计数器。
      

  10.   

    这么写无所谓,要是new什么的就要加括号了。。
      

  11.   

    java开发不比sql语句 必须得有括号括起来,调用方法也得有方法
      

  12.   

    话说第一份工作(对日外包)的第一个项目,规范中规定,把空格缩进变成tab,或者多一个空格,少一个空格都会被当作最严重的系统bug,少打20个空格,基本上当月工资就没了。
      

  13.   

    加大括号。 便于代码阅读。不然如:for(int i=0;i<5;i++)
       for(int j=0;j<5;j++)
      System.out.println("");  System.out.println("");
      

  14.   

    按下Ctrl+Shift+F就什么都好了,那用这么麻烦
      

  15.   


    好像 for里面定义的i只能在for块里面访问 不加{},等于没有for块 所以不能访问,是这样吗?
      

  16.   

    最好是加上{}这样显得规范。刚开始你可能觉得无所谓,以后你就能体会到代码规范的重要性。建议看一下我分享的资料,里面介绍了很多规范编码的原则,希望对你有用。
    http://download.csdn.net/source/3338211