iplus吧 关注:3贴子:4
  • 0回复贴,共1

java ——if语句后面加大括号和不加大括号的区别

取消只看楼主收藏回复

看上去一个很简单的问题,结果却不是想象中的那样。良好的编码习惯是多么的重要啊。
  测试的代码如下:
  public class TestPrintStream1 {
  public static void main(String[] args) {
  Class c = TestPrintStream1.class;
  try {
  Object o = c.newInstance();
  if (o instanceof TestPrintStream1)
  TestPrintStream1 tt = (TestPrintStream1) o;// 这里为什么会报错呢,说tt 和 TestPrintStream1不能不解析
  } catch (InstantiationException e) {
  e.printStackTrace();
  } catch (IllegalAccessException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }
  }
  那一行为什么会报错呢?if语句后面不是允许不加大括号吗?
  if ()
  后面不使用花括号时,里面不能出现声明,因为那个涉及到作用域,而没有花括号又没有作用域了。考试大编辑理解:
  boolean ok = true;
  if(ok)
  MyClass c = new MyClass();
  这样也是不允许的。
  改成
  MyClass c = null;
  if(ok)
  c = new MyClass();
  这样是可以的
  这个代码问题和 instanceof 没有任何关系
  Java 把 Test tt = new Test(); 当两条语句看待了相当于 Test tt; tt = new Test();
该文章转载自无忧考网:http://www.51test.net


IP属地:海南1楼2013-03-08 15:10回复