class Preson 
{ public String name; 
public int age; 
public void getInfo() 

System.out.println(name); 
System.out.println(age); 


class Student extends Preson 

String school=new String(); 
public void study() 

System.out.println("Studding"); 

public void getInfo() 

super.getInfo(); 
System.out.println(school); 

public static void main(String[] args) 

Preson p=new Preson(); 
p.name="person"; 
p.age=30; 
p.getInfo(); Student s=new Student(); 
s.name="student"; 
s.age=16; 
s.school="清华大学"; 
s.getInfo(); 
s.study(); 


这里的String school=new String(); 是否可以用String school;来代替呢? 
请详细说明

解决方案 »

  1.   

    这里的String school=new String(); 是否可以用String school;来代替呢? 
    ---------------------------------------------------------------------
    String school=new String():定义了一个指向String的引用,这个引用也指向了一个String对象,即使这个对象在这里是空的.
    String school 只是定义了一个指向String的引用,没有指向任何String对象.你的这里可以用来代替,但只不是过概念上的问题,因为String是不可继承和修改的,当每次为school赋值一个新的String字符串时,school都会指向新的String对象,而原来的String对象则没有引用指向,会被垃圾回收器给回收.
      

  2.   

    可以呀
    String school 就是定义了一个字符串的引用;
    String school=new String(); 而这个语句就把school指向了新创建的空字符串对象即使不指定school的初始值,对象初始化时,school也默认初始化为null