关于for循环问题,加不加括号有什么区别

   DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
          int a[]={1,3,4,62,13,35};
        for (int i = 0; i < a.length; i++) 

                dos.writeInt(a[i]);
                dos.close();                   

}
这样就没问题,但是如果
for (int i = 0; i < a.length; i++)
{
dos.writeInt(a[i]);
dos.close();

}

这样加了括号就有问题了,报写入错误,是为什么呢

 for (int i = 0; i < a.length; i++) 
                dos.writeInt(a[i]);//不加括号,for循环只包含这句
                dos.close();     //加了括号,这句也在for循环内了,close后再循环writeInt就报错了。

加了{}整当成一个整体为for的执行语句块,所以当你执行for循环i=0是就close了所以出错,不加{}时for后面的第一句话当成for的执行语句块

close()写在for循环外面

那没括号怎么知道循环到哪里结束呢

那没括号怎么知道循环到哪里结束呢

加括号版本:

 DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
 int a[]={1,3,4,62,13,35};
 for (int i = 0; i < a.length; i++) {

                dos.writeInt(a[i]);
                dos.close();   
}

第一次循环就把文件关了,你再读肯定出错。
不加括号相当于下面的版本:

 DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
 int a[]={1,3,4,62,13,35};
 for (int i = 0; i < a.length; i++) {

                dos.writeInt(a[i]);
}
 dos.close();   

即文件操作完再关闭且不再对已关闭的文件进行操作,这样就不会出错。

文件操作完之后再关闭流

不加大括号,默认循环条件下一行为循环体。
如加上括号,整个括号都是循环体,加了括号后你在第一次循环的时候已经 dos.close();第二次执行循环体写文件当然报错了~~~