问题情况:
某些实体需要用到实体中的一些属性,进行了修改,由于之前学的是基础类型是值传递不改变,
而现在用的都是对象类型 Double Integer 等 以为也是引用传递结果,表示并不是。
测试代码,逻辑定义一个初始值 通过方法来改变对象的值 再打印,表示除了Stringbuffer 其他都没被改变
public class test1028 {
public static void main(String[] args){
String s = "0";
Integer i = 0;
Double d = 0D;
Float f = 0F;
StringBuffer sb = new StringBuffer();
changeValue(s);
changeValue(sb);
changeValue(i);
changeValue(d);
changeValue(f);
System.out.println("I am s ="+s);
System.out.println("I am sb ="+sb);
System.out.println("I am i ="+i);
System.out.println("I am d ="+d);
System.out.println("I am f ="+f);
}
public static void changeValue(StringBuffer sb){
sb.append("123");
System.out.println("I am changeValue sb ="+sb);
}
public static void changeValue(String s){
s="1";
System.out.println("I am changeValue s ="+s);
}
public static void changeValue(Integer i){
i=1;
System.out.println("I am changeValue i ="+i);
}
public static void changeValue(Double d){
d=0.1D;
System.out.println("I am changeValue d ="+d);
}
public static void changeValue(Float f){
f=0.1F;
System.out.println("I am changeValue f ="+f);
}
}
打印结果:
I am changeValue s =1
I am changeValue sb =123
I am changeValue i =1
I am changeValue d =0.1
I am changeValue f =0.1
I am s =0
I am sb =123
I am i =0
I am d =0.0
I am f =0.0