之间的区别是什么...... c&的差异是否相同?的java ??
static int a=10;
//&
static int a;
a=10;
// Is the difference is same for both c & java??
答案 0 :(得分:0)
static int a;
声明一个变量,a=10;
定义它。您可以将两者结合起来使代码更短但如果您不知道编程时间内a
应该具有的值(例如因为它应该是用户输入值),则需要使用第二种方法然后在其他方法中定义a
。
请记住,第二个示例仅在a=10
位于某种方法中时才有效,否则会出现编译错误。
在c中,未定义的变量基本上会有未定义的值(如果我没记错的话),在java中,未定义的int变量的值为0.因此在c中,当你在定义它之前尝试使用它时可能会遇到麻烦在java中......好吧......你的值仍然是0,但它通常不会导致c中出现同样的麻烦。
示例(见评论):
public class ExampleClass
{
public static int a = 10;
public int b = 5;
}
public class Main
{
public static void main(String[] args)
{
ExampleClass exampleInstanceOne = new ExampleClass();
ExampleClass exampleInstanceTwo = new ExampleClass();
exampleInstanceOne.a = 20;
exampleInstanceOne.b = 20;
exampleInstanceTwo.a = 50;
exampleInstanceTwo.b = 50;
System.out.println("First a: " + exampleInstanceOne.a);
System.out.println("First b: " + exampleInstanceOne.b);
System.out.println("Second a: " + exampleInstanceTwo.a);
System.out.println("Second b: " + exampleInstanceTwo.b);
}
}
结果将是:
First a: 50
First b: 20
Second a: 50
Second b: 50
不同之处在于每个对象都有自己的b副本,所以我们得到两个不同的值,但由于a是静态的,它们都共享a的值,所以如果我们为第二个对象改变它,它也会改为第一个。
答案 1 :(得分:0)
这两行之间没有区别,第二行是为了便于阅读。但是当你硬编码值时,它是一个遵循可读性的愚蠢规则。
重要的是你在写这些线的地方。如果你不写行:a = 10;在静态块或方法中,您将面临编译错误。请参考下图。 You could see compile-time error