2016-07-26 2 views
-2

В чем разница между ... Разница одинакова для обоих c & java ??В чем разница между следующим .... Разница одинакова для c & java?

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

Второй пример не компилируется на Java. Какую разницу вы ищете? –

+0

Зачем вам использовать вариант 2, если вы можете использовать вариант 1? Первый пример был бы более читаемым, а второй не был бы использован в форме, которую вы предоставили. Если вы не можете использовать вариант 1, нам нужна дополнительная информация о том, почему. – Thomas

+0

'static' означает что-то немного отличающееся на Java от того, что это значит в C. На самом деле не совсем понятно, что вы здесь задаете. –

ответ

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 

Разница заключается в том, что каждый объект имел свою собственную копию б, таким образом мы получаем два различных значения , но поскольку a статично, они оба разделяют значение a, поэтому, если мы изменим его для второго объекта, он также будет изменен для первого.

+0

Я не понимаю, что вы объяснили. Пожалуйста, держите его простым. – Rachika

+0

Я думал, что сделал: D – Mark

+0

Я прочитал где-то статическую переменную, хранящую последнее значение в java..Is, что применимо для обоих c также? – Rachika

0

Нет разницы между этими двумя строками, вторая для удобства чтения. Но когда вы жестко кодируете значения, это немое правило следует читать.

Все, что имеет значение, это то, где вы пишете эти строки. Если вы не пишете строку: a = 10; в статическом блоке или методе вы столкнетесь с ошибкой компиляции. См. Изображение ниже. You could see compile-time error

Смежные вопросы