我今天注意到一个场景。当我们在私有方法上传递参数时,实体将返回修改后的值,而不是原始值。
这是我的示例代码,
/**
* @author gowthami
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
String s = "gowth";
System.out.println("before " + s);
concateMe(s, "ami");
System.out.println("after " + s);
BeanTest bt = new BeanTest();
bt.setId("1");
System.out.println("before");
System.out.println(bt.getId());
System.out.println(bt.getName());
setBeanTestName(bt, "gowthami");
System.out.println("after");
System.out.println(bt.getId());
System.out.println(bt.getName());
String st = new String("gowth");
System.out.println("before " + st);
concateMe(st, "ami");
System.out.println("after " + st);
}
private static void setBeanTestName(BeanTest bt, String string) {
bt.setName(string);
}
private static void concateMe(String s, String string) {
s = s+string;
System.out.println("inside method " + s);
}
}
BeanTest.java
public class BeanTest {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
因此,即使我们没有从私有方法返回它,但字符串不是,bean 也会得到更新。有人可以解释一下 JVM 级别发生了什么吗?
叮当猫咪
幕布斯6054654
白衣染霜花
相关分类