Являются ли имена инициализации и присваивания одинаковыми в Java (в первый раз, но не во второй раз)? - PullRequest
0 голосов
/ 04 января 2012

Просто чтобы прояснить слова в Java.

Типы примитивов:

Это право объявления:

int a;//declared but unitialized

Инициализациии назначения:

a = 1;//intialization and assignment

a = 2;//this is no longer intialization but still an assignment the 2nd time?

int b = 1;//declaration and intialization = assignment combined?

b = 2;//just assignment because 2nd time?

Типы классов:

String str;//declaration

str = "some words";//this is also an intialization and assignment?

str = "more words"; //since new object still both intialization and assignment even 2nd time?

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Инициализация является первым назначением.Всегда.

0 голосов
/ 04 января 2012

Компилятор считает переменную инициализированной, когда он знает, что локальная переменная установлена ​​и может быть прочитана без ошибок.

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

int a;
try {
    a = 1;
    // a is initialised and can be read.
    System.out.println(a); // compiles ok.
} catch (RuntimeException ignored) {
}
// a is not considered initialised as the compiler 
// doesn't know the catch block couldn't be thrown before a is set.
System.out.println(a); // Variable 'a' might not have been initialized

a = 2;
// a is definitely initialised.
System.out.println(a); // compiles ok.
...