
结论
java是按值传递还是按引用传递?其实两种说法都对。对于int、double、char等基本类型,函数传递
传的是值,如果在函数内部改变值不会影响原本的变量。对于其他类型则传递的则是对象的引用的拷贝。如果
通过这个引用拷贝修改对象,是可以生效的,但如果把其他对象赋给这个引用则是不生效的。
案例
public static void main(String[] args) {
int i = 1;
System.out.println(i);
change(i);
System.out.println(i);
String str = new String("123");
System.out.println(str);
change(str);
System.out.println(str);
StringBuilder sb = new StringBuilder("123");
System.out.println(sb);
change(sb);
System.out.println(sb);
}
//基本类型变量传递值,不会修改之前的变量
public static void change(int i){
i ++;
}
//引用类型传递引用拷贝,对这个拷贝赋值不影响之前的引用
public static void change(String str){
str = "abc";
}
//通过引用操作对象是起作用的。
public static void change(StringBuilder sb){
sb.append("45");
}
输出:
1
1
123
123
123
12345




近期评论