我帮你修改一下,不知道会不会是错的。 public class E15_StringRefInitialization { String str; public E15_StringRefInitialization(String str) { this.str=str; } char c; public static void main(String args[]) { E15_StringRefInitialization sri = new E15_StringRefInitialization("aaa"); System.out.println("sri.str = " + sri.str); } }
public E15_StringRefInitialization(String s){ String str=s; } ------------------------------------因为你的构造函数只是给该函数内的局部变量赋值 而不是对E15_StringRefInitialization类的str属性赋值
public class E15_StringRefInitialization { String str; public E15_StringRefInitialization(String s){ String str=s;//其实你在构造器中又声明了一个方法内的局部变量str,你对其赋值为s,这个变量并不是先前你定义的类变量str,你可以用this.str=s将s赋给类变量 } char c; public static void main(String args[]) { E15_StringRefInitialization sri = new E15_StringRefInitialization("aaa"); System.out.println("sri.str = " + sri.str);//sri.str中的str是类变量str
} }
public E15_StringRefInitialization(String s){ String str=s; } 构造函数中定义str为局部变量,不是你一开始定义的str了,把前面的String去掉就可以!
String str;
public Hello(String s){
String str=s;
System.out.println(s);
}
char c;
public static void main(String args[]) {
Hello sri = new Hello("aaa");
System.out.println("sri.str = " + sri.str);
}
}
String str="";
public E15_StringRefInitialization(String s){
str=s;
}public static void main(String args[]) {
E15_StringRefInitialization sri =
new E15_StringRefInitialization("aaa");
System.out.println("sri.str = " + sri.str);}
}
String str;
public E15_StringRefInitialization(String s){
str=s;
}
char c;
public static void main(String args[]) {
E15_StringRefInitialization sri =
new E15_StringRefInitialization("aaa");
System.out.println("sri.str = " + sri.str);
}
}
str =s ;
纠正一楼的错误
不加修饰符,不是private 是属于friendly 至于和public private protected 有什么不同你可以找本书看看
public class E15_StringRefInitialization
{
String str;
public E15_StringRefInitialization(String str)
{
this.str=str;
}
char c;
public static void main(String args[])
{
E15_StringRefInitialization sri = new E15_StringRefInitialization("aaa");
System.out.println("sri.str = " + sri.str);
}
}
String str=s;
}
------------------------------------因为你的构造函数只是给该函数内的局部变量赋值
而不是对E15_StringRefInitialization类的str属性赋值
String str;
public E15_StringRefInitialization(String s){
String str=s;//其实你在构造器中又声明了一个方法内的局部变量str,你对其赋值为s,这个变量并不是先前你定义的类变量str,你可以用this.str=s将s赋给类变量
}
char c;
public static void main(String args[]) {
E15_StringRefInitialization sri =
new E15_StringRefInitialization("aaa");
System.out.println("sri.str = " + sri.str);//sri.str中的str是类变量str
}
}
String str=s;
}
构造函数中定义str为局部变量,不是你一开始定义的str了,把前面的String去掉就可以!