栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

一、常用API,System、BigDecimal二、包装类,装箱和拆箱

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一、常用API,System、BigDecimal二、包装类,装箱和拆箱

2022.8.8

一、常用API,System、BigDecimal

API即应用程序编程接口application programming interface,由java写好的类和方法,提供给编程者直接使用

System类,其内部的成员方法和成员变量都是static静态的,构造方法是私有的不能实例化,作为工具类,成员变量包含in、out、err,分别代表标准输入流(键盘输入)、标准输出流(显示器)、标准错误输出流(显示器)。除了平时使用过的out.println()之外,还有:

exit(),即中止当前的虚拟机,传入参数为0即正常中止。
currentTimeMillis(),即获取当前时间毫秒值。

arrayCopy(),数组扩容方法,将当前数组,整个复制到新的数组上,后面会用到。

BigDecimal类,用来保证数字不丢失精度,类的构造方法,支持传入double和String类型,来构造成BigDecimal类型对象,且BigDecimal重写了toString方法,可以直接打印。其中,建议使用String类型进行传参,避免double本身带来的精度问题,BigDecimal有如下方法:

b1.add(b2),相加;b1.subtract(b2),相减;b1.multiply(b2),相乘;b1.divide(b2),相除;以上都是两个BigDecimal对象之间的操作。

其中b1.divide(b2),相除可能会遇到除不尽需要四舍五入的情况,则:b1.divide(b2,2,RoundingMode.HALF_UP);即b1/b2,保留2位小数,使用四舍五入模式

二、包装类,装箱和拆箱

由于基本数据类型不具备面向对象的特性,所以需要包装类型,继承Object,使得原本的基本数据类型,可以执行方法操作,例如Integer的默认值是null,而int的默认值是0,用Integer可以判断对应属性是否有数值isNull();。

手动装箱:例如:

基本数据类型int转换成对应的包装类型Integer:Integer.valueOf(10);其他包装类也有类似方法将基本数据类型转换成对应类型。而String.valueOf(Object obj),则是将Object类型也就是任何类型转换成String类型。

String类型转换成int:Integer.parseInt("10");其他包装类也有类似方法将String转换成基本数据类型。

String类型转换成Integer则:Integer.valueOf(Integer.parseInt("10"));

手动拆箱:包装类型转换成对应的基本数据类型:Integer a=10;System.out.println(a.intValue());

手动装拆箱则:Integer s1 = 2;int s2 = s1,或者在形参、返回值上进行装拆

Integer i = 1; //自动拆箱//Integer i = Integer.valueOf(1);

i += 1; //自动装箱//i = Integer.valueOf(i.intValue() + 1);

System.out.println("i:" + i)//System.out.println((new StringBuilder("i:")).append(i).toString());

Integer中:

#Integer s1 = 2;Integer s2 = 2;System.out.println(s1 == s2);

#答案为true;

#Integer s1 = new Integer(2);Integer s2 = new Integer(2);System.out.println(s1 == s2);

#答案为false

自动装箱等效于Integer.valueOf(),在valueOf()的方法中会缓存-127到128的Integer对象。

因此,在valueOf()方法中,如果值在-127-128之间,都会直接返回缓存中的该对象而不会重新生成对象,引用地址当然相同了。

而new Integer()的话并没有进行缓存,而且直接创建对象放入堆中,然后令栈中的2个变量引用它们,那么比较这两个变量也就是比较2个对象的内存地址当然会返回false。

使用缓存机制的原因是:因为我们常见的基本数据类型中,使用包装类包装数值时会创建大量对象,如果没有缓存的话,会有大量的包装类被创建,占用内存,降低效率。选择最常用的数值范围设置缓存机制,就可以优化这一现象。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1041055.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号