2013-09-30 2 views
1

для кода ниже я создал переменный экземпляр с именем класса в качестве возвращаемого типаJava переменная экземпляра с именем класса в качестве возвращаемого типа

class classtype{ 
    static classtype x; 

    public static void main(String...a){ 
     System.out.println(x); 
    } 
} 

выше код выходов null, указывающего, что эта переменная экземпляры, имеющее имя класса как возврат тип содержит значения типа строки и, очевидно, но когда я пытаюсь инициализировать его

static classtype x="1"; 

дает ошибку несоответствия типа найдено в java.Lang.String

пожалуйста, если кто-нибудь может объяснить

+2

Это не совсем понятно. –

+0

"выше выходов кода в null, указывая, что переменная этого экземпляра, имеющая имя класса в качестве типа возврата, содержит значения типа строки" Нет, это совсем не то, что она указывает. –

+0

Обратите внимание, что это не переменная экземпляра, а статическое поле. Вы можете назвать это переменной класса, хотя (но это не стандартное имя). –

ответ

6

Error1:

x="1"; 

Вы не можете сделать это

Поскольку Classtype не String типа.

Error2:

Печать null

class Classtype{ 
     static Classtype x = new Classtype(); 
     public static void main(String...a){ 
     System.out.println(x); 
     } 
     } 

Убедитесь, что System.out.println(x); здесь по умолчанию печатает Объектами toString метод.

Поскольку ваш x не инициализируется, он теперь пуст.

Так, согласно print (println вызывает print) метод

Печать строки. Если аргумент равен нулю, тогда печатается строка «null». В противном случае символы строки преобразуются в байты в соответствии с кодировкой символов по умолчанию для платформы, и эти байты записываются точно так же, как метод write (int).

Для печати требуется StringovveridetoString метод в Classtype классе. И следуйте правилам именования java. Названия классов начинаются с колпачков.

Со всеми код становится

public class Classtype { 


     static Classtype x = new Classtype(); 
     public static void main(String...a){ 
     System.out.println(x); 

     } 

     @Override 
     public String toString() { 
     // TODO Auto-generated method stub 
     return "This is ClassType toString"; 
     } 

} 
+0

Как теперь вы все освещали. Итак, удалил мой ответ. +1 –

+0

Рад получить комплименты от учителя :). –

+1

Ну, теперь это дополнение. :) –

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