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;来代替呢?
请详细说明
{ 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;来代替呢?
请详细说明
---------------------------------------------------------------------
String school=new String():定义了一个指向String的引用,这个引用也指向了一个String对象,即使这个对象在这里是空的.
String school 只是定义了一个指向String的引用,没有指向任何String对象.你的这里可以用来代替,但只不是过概念上的问题,因为String是不可继承和修改的,当每次为school赋值一个新的String字符串时,school都会指向新的String对象,而原来的String对象则没有引用指向,会被垃圾回收器给回收.
String school 就是定义了一个字符串的引用;
String school=new String(); 而这个语句就把school指向了新创建的空字符串对象即使不指定school的初始值,对象初始化时,school也默认初始化为null