2015-09-27 2 views
0

Если t1 дает ошибку компиляции, t2 печатает адрес памяти, t3 печатает нуль, , то что бы вы написали, чтобы получить значение по умолчанию для объекта (null).Как напечатать значение по умолчанию для объекта?

public class Test { 

public Test{ 

} 
public static void main(String[] args) { 
    Test t1;        
    Test t2= new Test();     
    Test t3= null;       
    System.out.println(t1);   //compile error uninitialized 
    System.out.println(t2);   //prints memory address 
    System.out.println(t3);   //prints null 

} 
} 
+1

Не понимаю вопроса. Вы уже это делаете. – ergonaut

+0

Это потому, что я назначил null для t3. У java есть значение по умолчанию? поэтому без назначения он должен знать, что он может принимать значение null –

+0

Нет, Java не имеет значения по умолчанию для локальных переменных метода. Перед использованием переменной необходимо присвоить значение. См. Мой ответ ниже. –

ответ

2

Только экземпляры или статические переменные (объявленные в классе) имеют значение по умолчанию. Локальная переменная (объявленная в области метода) не имеет значений по умолчанию: вам необходимо инициализировать эти переменные перед их использованием.

Так что компилятор является правильным, когда он отвергает печать t1 (с ошибкой компиляции): вы не назначили значение этой переменной в этой точке в способе, и это локальная переменная, так что делает не имеют значение по умолчанию.

+0

Я переместил t1 на уровень класса. он дает нестационарную переменную t1 не может ссылаться на статический контекст (ошибка времени выполнения) –

+0

@ Квадратный корень Сделайте его «статической» переменной тогда (поскольку метод 'main' также является« статическим ») –

+0

вы супер спасибо так много –

0

только переменные имеют значения по умолчанию. Объект содержит указанные переменные или другие объекты, которые также содержат переменные или другие объекты и т. Д.

1

Переменные здесь являются локальными переменными в методе. От Java doc:

Компилятор присвоит разумное значение по умолчанию для полей выше типов; для локальных переменных значение по умолчанию никогда не назначается.

Таким образом, вам необходимо инициализировать их вручную.

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