值传递和引用传递,近期接口开发中处理结果集等数据的时候常用到,二者主要区别在于所传的参数类型:
public static void main(String[] args) {
test();
}
public static void test(){
String str1="Hello";
change(str1);
System.out.println("str1: "+str1);
StringBuffer str2=new StringBuffer("Hello");
change(str2);
System.out.println("str2: "+str2);
List<String> list = new ArrayList<>();
list.add("1");
change(list);
System.out.println("list: "+list);
}
public static void change(String str){
str = str + " world";
}
public static void change(StringBuffer str){
str.append(" world");
}
public static void change(List<String> list){
list.add("2");
}
打印结果:
str1: Hello
str2: Hello world
list: [1, 2]
参数为基本类型--值传递,不会修改实参对象;
参数为引用类型--引用传递,会修改实参对象;
(String, Integer, Double等immutable的类型特殊处理,可以理解为传值)