2012-03-13 2 views
5

Каждый тип Java имеет примитивное значение при объявлении. Эта статья содержит описание примитивных типов данных Primitive Data Types. Зная это, почему Eclipse показывает ошибку, сообщающую мне, что переменная, возможно, не была инициализирована? Если у меня есть, например,Значение переменной по умолчанию в Java

int x; 
x++; 
+1

только локальные переменные не инициализируются по умолчанию – MozenRath

ответ

14

Из ссылки

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

+5

. Если антибэджи не были [сбиты] (http://blog.stackoverflow.com/2009/12/badges-positive-only/), я бы предложил значок «ответился по вашей собственной ссылке». –

2

Локальные переменные не инициализируются.

Это локальная переменная:

void aaa() { 
    int x; 
} 

Это переменная экземпляра. Они автоматически инициализируются:

class X { 
    int x; 
} 
+2

@Mansuro: также для содержимого массива. –

+0

статические переменные также получают intitialized ... Насколько я знаю, это примерно так: только локальные переменные не получают инициализацию. И содержимое массива автоматически инициализируется. – Tom

+0

Если содержимое массива автоматически инициализируется, почему возникает исключение NullPointerException при попытке доступа к элементу по индексу? – Mansuro

-4

То, что вы видите, - это не ошибка, а ваше предпочтение затмения. Вы можете изменить его, чтобы игнорировать неинициализированные переменные в предпочтении eclipse.

-1

Из примитивных типов данных ссылок, предоставляемых вами:. «Локальная переменные немного отличается, компилятор никогда не присваивает значение по умолчанию неинициализированному локальным переменный Если вы не можете инициализировать локальные переменные, где она объявлена, сделать обязательно присвойте ему значение, прежде чем пытаться его использовать. Доступ к неинициализированной локальной переменной приведет к ошибке времени компиляции ».

4

С Java Language Specification, Java SE 8 Издание, 4.12.5 Initial Values of Variables:

Локальная переменная (§14.4, §14.14) должен быть явно присвоено значение перед его использованием, либо инициализации (§14.4) или (§15.26), таким образом, который может быть проверен с использованием правил для определенного присвоения (§16 (Определенное назначение)).

0

Тип данных Значение по умолчанию (для полей)

байт 0

короткая 0

INT 0

долго 0L

поплавок 0.0f

двойной 0.0d

символ «u0000»

String (или любой объект) нулевой

булевы ложные

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