当我从另一个类调用一个方法时,它返回null。我只会告诉你我的代码
class One{
Two two;
oneMethod(){
String str = "";
two.twoMethod(str);
S.o.p("Str in One class is " + str);
}
}
class Two{
String twoMethod(String str){
str = "From Two class";
S.o.p("Str in Two class is " + str);
return str;
}
}
输出如下: Str in One类是___ //意味着空
Str in Two class是 From Two class
我对此的理解是,在调用twoMethod()之后,现在将使用新的str值“From Two class”覆盖最初为null的str。现在,当我们在One类中打印str时,它应该与在Two类中打印的内容相同。这就是我理解流程的方式。
我是否错过任何关于传递字符串的概念/规则?任何反馈都表示赞赏。谢谢!
答案 0 :(得分:1)
你应该这样写:
class One{
Two two;
oneMethod(){
String str = "";
str = two.twoMethod(str);
S.o.p("Str in One class is " + str);
}
}
代表class one
。
答案 1 :(得分:0)
我发现问题不在于该方法返回null。您尚未初始化类Two
,您应该了解java是通过引用传递还是传递值。您应该在调用其中一种方法之前初始化您的类。
class One{
Two two;
oneMethod(){
String str = "";
Two two = new Two();
str = two.twoMethod(str);
S.o.p("Str in One class is " + str);
}
}
class Two{
String twoMethod(String str){
str = "From Two class";
S.o.p("Str in Two class is " + str);
return str;
}
}
除了对象初始化之外,请考虑您的问题下的注释(String是不可变的,Java是pass-by-value)。
答案 2 :(得分:0)
Java按值传递对象的引用。因此,在下面的代码段中,str
不通过引用传入twoMethod(String)
,并且String
对象在初始化时保持不变(空字符串)。
oneMethod() {
String str = "";
two.twoMethod(str);
System.out.println("Str in One class is " + str);
}