Java:从其他类调用String返回方法返回null

时间:2017-03-15 08:06:11

标签: java string

当我从另一个类调用一个方法时,它返回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类中打印的内容相同。这就是我理解流程的方式。

我是否错过任何关于传递字符串的概念/规则?任何反馈都表示赞赏。谢谢!

3 个答案:

答案 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);
}