我的问题是关于Java中的声明和值赋值规则。 在编写字段时,我们可以声明并分配值,但我们不能单独执行相同的操作。
E.G:
class TestClass1 {
private int a = 1;
private int b ;
b= 1;
private int sum;
public int getA() {
return a;
}
public int getB() {
return b;
}
public int getSum() {
sum = a + b;
return sum;
}
}
public class TestClass {
public static void main(String[] args) {
TestClass1 testClass1 = new TestClass1();
System.out.println("total =" + testClass1.getSum());
}
}
在线:
private int a = 1;
我们可以将a声明为私有int并为其赋值1。但在以下情况下:
private int b ;
b= 1;
Eclipse不允许这种情况发生并抛出错误。请解释一下这背后的逻辑。
答案 0 :(得分:5)
类中的代码,但在函数外部,纯粹是声明。它没有被“执行”。它只是声明一个类包含哪些字段。
您可以使用简写private int a = 1;
的原因只是Java语言允许的语法糖。实际上,会发生的是a = 1
部分作为构造函数的一部分执行。当它在变量声明旁边时,它更容易读写。
Java语言创建者允许这样做很好。并非每种语言都允许这样,将C ++视为一个并不总是允许它的例子。
答案 1 :(得分:2)
您必须将b=1;
放在方法中或将其置于构造函数中。
您收到此错误,因为除了声明之外您不能做任何事情(private int a= 1;
)在班级。
答案 2 :(得分:1)
这只是Java中语法的问题。在您显示的示例中,您尝试在类的成员声明部分中将值影响为b。 Java的语法不允许这样做。只有在声明属性时,在方法体内或静态块中,如果属性是静态的,例如,您才能这样做。 :
private static int b;
static {
b = 1;
}
答案 3 :(得分:1)
这只是一个语法问题。你可以这样做:
private int b ;
{ // <- Initialization block
b= 1;
}
答案 4 :(得分:0)
您无法直接在课堂上编写逻辑。你应该将它移动到构造函数。
Java只允许在类和任何方法之外进行声明。初始化新对象时,将执行int b = 1;
之类的声明。