6.4.2 省略花括号的危险
下面代码中的循环题只有一行代码,所以尝试省略该循环体的或括号
package com.qunar.bigInteger; class Cat { private static long instancecCount = 0; public Cat() { System.out.println("执行无参的构造器"); instancecCount++; } public static long getInstanceCount() { return instancecCount; } } public class CatTest { public static void main(String[] args) { //循环创建10个Cat对象 for(int i=0;i<10;i++) Cat cat = new Cat(); System.out.println(Cat.getInstanceCount()); } }
改程序看上去没有什么问题,但是编译时却有以下的错误的提示:
CatTest.java:20: 不是语句 Cat cat = new Cat(); ^ CatTest.java:20: 需要 ';' Cat cat = new Cat(); ^ 2 错误
这是因为Java规定:如果程序要使用循环来重复定义局部变量,这条局部变量定义语句必须放在花括号内才有效。因此将上面程序中的CatTest修改为以下代码即可:
public class CatTest { public static void main(String[] args) { // 循环创建10个Cat对象 for (int i = 0; i < 10; i++) { Cat cat = new Cat(); } System.out.println(Cat.getInstanceCount()); } }