@Test
public void a() {
List a = new ArrayList();
String b = "1";
;
Map c = new HashMap();
c.put("1", "1"); b(a, b, c);
System.out.println(a.toString() + "------" + b + "--------" + c.toString());
} public void b(List a, String b, Map c) {
a.add("a");
a.add("b");
a.add("c");
b = "2";
c.put("2", "2"); }
输出
[a, b, c]------1--------{2=2, 1=1}
为什么String引用地址没变
public void a() {
List a = new ArrayList();
String b = "1";
;
Map c = new HashMap();
c.put("1", "1"); b(a, b, c);
System.out.println(a.toString() + "------" + b + "--------" + c.toString());
} public void b(List a, String b, Map c) {
a.add("a");
a.add("b");
a.add("c");
b = "2";
c.put("2", "2"); }
输出
[a, b, c]------1--------{2=2, 1=1}
为什么String引用地址没变
Integer是基本数据类型?哪int是什么?
Integer是基本数据类型?哪int是什么?自动装箱拆箱, integer是int的包装类,不是基本类型,纠正下
Integer是基本数据类型?哪int是什么?自动装箱拆箱, integer是int的包装类,不是基本类型,纠正下
按你说的,基本数据类型是值传递,对象是按引用,那为什么在楼主的问题中,String的引用没有被改变,Java中只有值传递的
这跟引用类型没有关系,换成Integer结果也是一样的基本数据类型是按值传递,对象是按引用, Integer是基本数据类型,按值传递的,形参改变的只是实参的数据副本,实参值不变
Integer是基本数据类型?哪int是什么?自动装箱拆箱, integer是int的包装类,不是基本类型,纠正下
我去,看源码吧,这个和String性质是一样的,图就不贴了,误导大家了
这跟引用类型没有关系,换成Integer结果也是一样的基本数据类型是按值传递,对象是按引用, Integer是基本数据类型,按值传递的,形参改变的只是实参的数据副本,实参值不变
Integer是基本数据类型?哪int是什么?自动装箱拆箱, integer是int的包装类,不是基本类型,纠正下
我去,看源码吧,这个和String性质是一样的,图就不贴了,误导大家了
不知道你为什么非要纠结于被final修饰这个问题,不管他有没有被final,能不能修改,Java中是只有值传递没有引用传递
这跟引用类型没有关系,换成Integer结果也是一样的基本数据类型是按值传递,对象是按引用, Integer是基本数据类型,按值传递的,形参改变的只是实参的数据副本,实参值不变
Integer是基本数据类型?哪int是什么?自动装箱拆箱, integer是int的包装类,不是基本类型,纠正下
我去,看源码吧,这个和String性质是一样的,图就不贴了,误导大家了
不知道你为什么非要纠结于被final修饰这个问题,不管他有没有被final,能不能修改,Java中是只有值传递没有引用传递值是对象的时候,传递的是地址,我所谓的引用其实是地址值传递,你要理解为只有值传递,太过死板的话,是不是形参传值都不会改变实参的值?
这跟引用类型没有关系,换成Integer结果也是一样的基本数据类型是按值传递,对象是按引用, Integer是基本数据类型,按值传递的,形参改变的只是实参的数据副本,实参值不变
Integer是基本数据类型?哪int是什么?自动装箱拆箱, integer是int的包装类,不是基本类型,纠正下
我去,看源码吧,这个和String性质是一样的,图就不贴了,误导大家了
不知道你为什么非要纠结于被final修饰这个问题,不管他有没有被final,能不能修改,Java中是只有值传递没有引用传递值是对象的时候,传递的是地址,我所谓的引用其实是地址值传递,你要理解为只有值传递,太过死板的话,是不是形参传值都不会改变实参的值?
那也不能这样说,如果传一个Buffer对象,实参肯定会被改变的
https://www.jianshu.com/p/d5323deb04db