博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 包装类 可变_在Java中,原始包装类是不可变的 - Break易站
阅读量:6999 次
发布时间:2019-06-27

本文共 654 字,大约阅读时间需要 2 分钟。

Java 包装类

考虑下面的Java程序。

// Java program to demonstrate that prmitive

// wrapper classes are immutable

class Demo

{

public static void main(String[] args)

{

Integer i = new Integer(12);

System.out.println(i);

modify(i);

System.out.println(i);

}

private static void modify(Integer i)

{

i = i + 1;

}

}

输出:

12

12

参数i在修改中引用并引用与main()中的i相同的对象,但对i的更改未反映在main()中,为什么?

说明:

所有原始包装类(Integer,Byte,Long,Float,Double,Character,Boolean和Short)在Java中都是不可变的,因此加法和减法等操作会创建一个新对象而不会修改旧对象。

modify方法中的下面一行代码在包装类Integer上运行,而不是int

i = i + 1;

它执行以下操作:

Unbox i为int值

将1添加到该值

将结果存储到另一个Integer对象中

将生成的整数分配给i(从而更改我引用的对象)

由于对象引用是按值传递的,因此在modify方法中采取的操作不会更改在修改调用中用作参数的i。因此,主程序在方法返回后仍然打印12。

转载地址:http://tbevl.baihongyu.com/

你可能感兴趣的文章
PHP浮点数的精确计算BCMath
查看>>
Eclipse智能提示设置
查看>>
代码依赖和解除具体依赖的技术
查看>>
CF149D. Coloring Brackets[区间DP !]
查看>>
Map在内存中的结构
查看>>
中心极限定理
查看>>
DVB数字电视系统简介(DVB-C,DVB-S,DVB-T)
查看>>
什么时候使用CountDownLatch
查看>>
转】Maven学习总结(七)——eclipse中使用Maven创建Web项目
查看>>
linkedhashSet和hashSet和TreeSet的区别(转)
查看>>
linux下vim命令详解
查看>>
https证书提供商
查看>>
hashcode详解
查看>>
hibernate(二)一级缓存和三种状态解析
查看>>
ttttttttttt
查看>>
spring3.0使用annotation完全代替XML(三)
查看>>
Atitit 查询优化器的流程attilax总结
查看>>
testng入门教程3用TestNG执行case的顺序
查看>>
*** wechat-php-sdk 微信公众平台php开发包
查看>>
C++常见gcc编译链接错误解决方法
查看>>