1.先看代码:

package main.java.db.mq;

public class TestSwap {

	
	public static void main(String[] args) {
		Integer a=1;
		Integer b=2;
		System.out.println("a:"+a+",b:"+b);
		Swap(a,b);
		System.out.println("a:"+a+",b:"+b);
	}
	public static void Swap(Integer a,Integer b){
		a=3;
		b=4;
	}

}

输出结果:

a:1,b:2
a:1,b:2
为什么不可变呢?按道理说对象传值是传的应用的拷贝,指向同一个内存地址,应该会改变才对!

原因是虚拟机做了手脚,看编译后的class文件
Interger不可变原理

 

查看源码,Integer.valueOf()方法做了什么
Interger不可变原理

很名显返回了个新的对象!

 还有与String类似,所有的包装类都是final类,即不可变类,但是类似处理!

 

相关文章:

  • 2021-11-11
  • 2021-06-01
  • 2023-03-18
  • 2021-10-12
  • 2022-12-23
  • 2021-05-24
  • 2021-09-10
猜你喜欢
  • 2021-04-14
  • 2021-10-07
  • 2022-12-23
  • 2021-11-23
  • 2021-12-04
  • 2022-12-23
相关资源
相似解决方案