多谢赐教 楼上有说:申明部分不能有执行语句。 也不是说: x = new A(); 是执行语句了 // 不知道理解得对不对不知道申明部分的: A x = new A();属不属于执行语句?
A x = new A();不属于
小弟只是想知道为什么 x = new A(); 属于而在x前面加了一个A变成 A x = new A(); 就不属于了呢? 它们之间有什么本质的区别吗?
A x = new A(); 是定义并初始化,系统就是这么规定的,不能分开来做。 如果用 A x; 那 x = new A(); 就必须放在方法里,或者用块初始化,就是像你上面做的 A x; { x = new A(); } 一样,加一对大括号就可以了。 这个问题《Core Java》里有论述。好像是在继承那部分,看一下你就明白了。
A x; 或是A x = null; 或是A x = new A(); 这些都是声明(Statement)而x = new A(); 则是表达式(Expression)
这句话是个语句,是不能出现在那里的。当然编译器会报错
不过前者可以带statement,后者只能是expression
申明部分不能有执行语句。
所有可执行语句都必须放到方法或是程序块(就是用大括号装起来)中
楼上有说:申明部分不能有执行语句。
也不是说:
x = new A();
是执行语句了 // 不知道理解得对不对不知道申明部分的:
A x = new A();属不属于执行语句?
x = new A();
属于而在x前面加了一个A变成
A x = new A();
就不属于了呢?
它们之间有什么本质的区别吗?
是定义并初始化,系统就是这么规定的,不能分开来做。
如果用 A x;
那 x = new A(); 就必须放在方法里,或者用块初始化,就是像你上面做的
A x;
{
x = new A();
}
一样,加一对大括号就可以了。
这个问题《Core Java》里有论述。好像是在继承那部分,看一下你就明白了。
或是A x = null;
或是A x = new A();
这些都是声明(Statement)而x = new A();
则是表达式(Expression)