基本类型的包装类

Java语言的8种基本类型分别对应8种“包装类”,每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了一些针对该数据类型的实用方法。

包装类是让基本数据数据以对象的形式存在和使用。

1、编译器对包装类的支持

在JDK5之前,使用包装类进行运算较繁琐的“拆箱”和“装箱”操作:即运算前先包装类对象所封装的基本数据类型,运算后在将结果封装成包装类对象。

Integer i = Integer.valueOf(100);

Integer i = Integer.valueOf(200);

Integer k = Integer.valueOf(i.intValue()+j.intValue());

JDK5增加了自动“拆箱”和“装箱”的功能,就简单多了。

Integer i = 100;

Integer i = 200;

Integer k = i+j;

自动“拆箱”和“装箱”是编译器的“预处理”操作。

2、Integer和Double常用方法

Integer.parseInt(obj):转换为int或者double,无法解析时候抛出 NumberFormatException

Integer.toBinaryString(int);

Integer.toHexString(int);

分别把int转换成二进制和十六进制的字符串序列。

3、BigDecimal类

Java浮点数据类型(float/double)在运算时会有舍入误差,如果希望得到精确的计算结果,可以使用java.math.BigDecimal类。

BigDecimal d1 = new BigDecimal("2.5");

BigDecimal d2 = new BigDecimal("3.6");

System.out.println(d1.subtract(d2));//减法

System.out.println(d1.add(d2));//加法

System.out.println(d1.multiply(d2));//乘法

//除法

/*注意:

*     使用除法要使用舍入原则

*     否则当遇到无限小数时,会一直除到溢出,无限下去就溢出。

*     使用BigDecimal.ROUND_HALF_UP 为其四舍五入。

*/

System.out.println(d1.divide(d2, BigDecimal.ROUND_HALF_UP));

当我们对计算精度有严格要求时,会使用该类,不过在大多情况下double足够。

4、BigInteger类

java提供的整数类型(int和long)的储存范围有限,当需要进行在更大的整数运算时可以使用这个类,理论上讲BigInteger的储存范围之受内存容量的限制。

同样也有加减乘除运算。只不过只针对整数运算。

BigInteger sum = BigInteger.valueOf(1);

for (int i = 2; i <= 200; i++) {

//multiply参数要求BigInteger,所以i也要转换为BigInteger

sum = sum.multiply(BigInteger.valueOf(i));

}

System.out.println(sum.toString().length());//结果的长度

System.out.println(sum);

//试试看有多少光年?

sum = sum.divide(BigInteger.valueOf(3600*24*360).multiply(BigInteger.valueOf(300000)));

System.out.println(sum);

转载于:https://blog.51cto.com/huing/1294992

CoreJava学习3——​基本类型的包装类相关推荐

  1. 3.内存分配、逃逸分析与栈上分配、直接内存和运行时常量池、基本类型的包装类和常量池、TLAB、可达性分析算法(学习笔记)

    3.JVM内存分配 3.1.内存分配概述 3.2.内存分配–Eden区域 3.3.内存分配–大对象直接进老年代 3.3.1.背景 3.3.2.解析 3.4.内存分配–长期存活的对象进去老年代 3.5. ...

  2. JVM - 基本类型的包装类和对象池

    文章目录 Pre 八大基本类型 Demo Pre JVM - 深入剖析字符串常量池 学习了String 字符串常量池. 接下来我们也顺便看下基本类型的包装类和起对应的对象池 JDK1.8 八大基本类型 ...

  3. java包装和引用_回顾值传递和引用传递关于Java是值传递还是引用传递,网上有不一样的说法。1、基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递。2...

    回顾值传递和引用传递 关于Java是值传递还是引用传递,网上有不一样的说法. 1.基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递. 2.Java中只有值传递. 关于这个问题应该 ...

  4. 八种基本类型的包装类你真的懂了?

    进来先做个题: Integer i1 = 10;Integer i2 = 10;Integer i3 = 128;Integer i4 = 128;Integer i5 = 118;Integer i ...

  5. 20171220-python学习笔记--函数类型

    20171220-python学习笔记--函数类型 备注: #位置参数 #传入两个参数 def power(x, n):s = 1while n > 0:n = n - 1s = s * xre ...

  6. Python学习笔记之类型判断,异常处理,终止程序操作小结

    Python学习笔记之类型判断,异常处理,终止程序操作小结 运行结果: 这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发. 爬虫.数据分析.数据可视化.机 ...

  7. Java基础---常用类之Arrays工具类+基本类型的包装类

    常用类之Arrays工具类 1.binarySearch(int[] a,int key) 使用二分搜索法来搜索指定的 int 型数组 2.fill(int[] a,int val)将指定的 int ...

  8. JavaScript学习笔记:类型检测

    JavaScript学习笔记:类型检测 1.利用typeof检测数据类型 注意:type of null,返回的不是"null",而是"object".type ...

  9. python类的数组属性_Python学习之数组类型一:

    Python学习之数组类型一: Numpy中的向量与矩阵: 1.创建: 向量.矩阵均由array函数创建,区别在于向量是v=array( [逗号分隔的元素] ), 矩阵是M=array( [[ ]] ...

最新文章

  1. 端到端半监督目标检测框架
  2. 【收藏】Linux系统常用命令速查手册(附PDF下载链接)
  3. Android NDK学习(3)使用Javah命令生成JNI头文件 .
  4. zblog如何调用HTML,Zblog调用栏目文章的方法
  5. 利用pickle保存模型
  6. (3)nginx的虚拟主机配置
  7. linux输入法_超强两笔输入法 入门简文
  8. 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc
  9. 30岁以上的女人应选择什么品牌的眼霜?
  10. jquery中ajax加载js和json文件
  11. MySQL UTF8与UTF8MB4
  12. jdk1.8_API中文帮助文档
  13. qt中将数据存入文档再读出------------ writeRawData 与readRawData成对使用
  14. wifi连接一段时间才能上网_家里的WiFi老是突然断网,WiFi还是连着的,但是关WiFi又连不上去,必须重启路由器才能上网...
  15. 腾讯视频播放内容下载流程
  16. 图片标签z-index设置不起作用
  17. AgentWeb , 一个简洁易用的 Android Web 库
  18. 诺基亚n8和n9java_诺基亚官方发布 N8与N9的十大区别
  19. tomcat上面出现红色的×
  20. Unity【01 AssetBundle】【02 Lua】

热门文章

  1. Java nio 学习笔记 相关知识
  2. 关于jQuery Mobile 的pageinit,pageshow,以及data-ajax
  3. linux查找特定类型的文件中是否包含特定字段
  4. 分享一个帮助用户全屏阅读的jQuery插件 - jQuery fullscreen
  5. “java程序打成jar包 如何处理第三方jar包”
  6. SQL Server 2008 R2 中不能删除复制(replication) 的解决方法
  7. Oracle 性能调优 概述
  8. vue子组件改变父组件的值
  9. Linux - XShell - alt 快捷键的设置
  10. 六、Scrapy中Download Middleware的用法