以下之间有什么区别...... c&的差异是否相同? java吗?

时间:2016-07-26 09:45:30

标签: java

之间的区别是什么...... c&的差异是否相同?的java ??

  static int a=10;
  //&
  static int a;
  a=10;
  // Is the difference is same for both c & java??

2 个答案:

答案 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