基本数据类型和封装类对照表
- 基本数据类型 封装类
- byte Byte
- short Short
- int Integer
- long Long
- float Float
- double Double
- char Character
- boolean Boolean
基本概念
- 封装类功能
- 将基本数据类型封装当对象操作
- 为基本数据类型提供各种转换功能
- 封装类一旦被创建,内容永不改变,如需封装新的内容,创建新对象
- 通过修改封装类引用的指向来实现如同修改对象值
- 封装类都是final的类,不能被继承
Integer
- final
- extends Number
- implements Comparable<Integer>
Integer常用方法
- package com.itlwc;
- public class Test {
- public static void main(String[] args) {
- // int转型为Integer
- new Integer(10);
- Integer.valueOf(10);
- // int转型为String
- Integer.toString(10);
- // int转型为String带进制
- Integer.toString(10, 2);
- Integer.toString(10, 8);
- Integer.toString(10, 16);
- Integer.toBinaryString(10);
- Integer.toOctalString(10);
- Integer.toHexString(10);
- // String转型为Integer
- new Integer("10");
- Integer.valueOf("10");
- Integer.decode("10");
- // String转型为Integer带进制
- Integer.valueOf("10", 2);
- Integer.valueOf("10", 8);
- Integer.valueOf("10", 16);
- // String转型为int
- Integer.parseInt("10");
- // String转型为int带进制
- Integer.parseInt("10", 2);
- Integer.parseInt("10", 8);
- Integer.parseInt("10", 16);
- // 返回符号 1为正 -1为负 0为0
- Integer.signum(10);
- // 返回byte
- new Integer(10).byteValue();
- // 返回short
- new Integer(10).shortValue();
- // 返回int
- new Integer(10).intValue();
- // 返回long
- new Integer(10).longValue();
- // 返回double
- new Integer(10).doubleValue();
- // 返回float
- new Integer(10).floatValue();
- // 比较此对象与指定对象
- new Integer(10).equals(10);
- // 在数字上比较两个 Integer 对象
- new Integer(10).compareTo(10);
- // 最大值最小值
- int max = Integer.MAX_VALUE;
- int min = Integer.MIN_VALUE;
- }
- }
Integer的缓存机制
- public class Test {
- public static void main(String[] args) {
- Integer a = 100;
- /*
- * 如果使用这种方法为i赋值
- * Integer类有一个缓存机制
- * Integer类认为认为-128~127之间的整数是我们经常用到的数值
- * 因为100在这个范围就不生成对象,使用缓存好的对象
- */
- Integer b = 100;
- if (a == b) {
- System.out.println("a==b");
- } else {
- System.out.println("a!=b");
- }
- Integer aa = 200;
- // 因为200不在这个范围生成新的对象
- Integer bb = 200;
- if (aa == bb) {
- System.out.println("aa==bb");
- } else {
- System.out.println("aa!=bb");
- }
- // 如果使用构造方法就没有缓存
- Integer aaa = new Integer(100);
- Integer bbb = new Integer(100);
- if (aaa == bbb) {
- System.out.println("aaa==bbb");
- } else {
- System.out.println("aaa!=bbb");
- }
- }
- }
- 打印:
- a==b
- aa!=bb
- aaa!=bbb
valueOf() VS parseXxx()
- valueOf()可以以基本数据类型和字符串为参数,返回的是封装类对象的引用
- parseXxx()只能以字符串为参数,返回的是基本数据类型的值
isNaN()
- 判断Double,Float对象封装的值是否是NaN
- 只有浮点数对应的封装类具有该方法
- 该方法被重载了
- 一个无参数的,非静态的,boolean isNaN()
- 一个是有参数的,静态的,static boolean isNaN(x)
- x代表float或者double
案例
- package com.itlwc;
- public class Test {
- public static void main(String[] args) {
- Double d = new Double(12.0%0);
- if(d.isNaN()){
- System.out.println("封装的对象值为NaN");
- }else{
- System.out.println("封装的对象值为"+d);
- }
- }
- }
- /*
- 打印结果:
- 封装的对象值为NaN
- */
java.math.BigInteger
- package com.itlwc;
- import java.math.BigInteger;
- public class Test {
- public static void main(String[] args) {
- BigInteger bi1 = new BigInteger("222222222222222222222");
- BigInteger bi2 = new BigInteger("111111111111111111111");
- System.out.println("bi1+bi2: "+ bi1.add(bi2));
- System.out.println("bi1-bi2: "+ bi1.subtract(bi2));
- System.out.println("bi1*bi2: "+ bi1.multiply(bi2));
- System.out.println("bi1/bi2: "+ bi1.divide(bi2));
- System.out.println("bi1%bi2: "+ bi1.mod(bi2));
- System.out.println("bi1的负数: "+ bi1.negate());
- //取bi1的符号
- if(bi1.signum()==1){
- System.out.println("bi1为整数");
- }else{
- System.out.println("bi1为负数");
- }
- //bi1与bi2的大小
- if(bi1.compareTo(bi2)>0){
- System.out.println("bi1大于bi2");
- }else{
- System.out.println("bi1小于bi2");
- }
- }
- }
- /*
- 打印结果:
- bi1+bi2: 333333333333333333333
- bi1-bi2: 111111111111111111111
- bi1*bi2: 24691358024691358024641975308641975308642
- bi1/bi2: 2
- bi1%bi2: 0
- bi1的负数: -222222222222222222222
- bi1为整数
- bi1大于bi2
- */
java.math.BigDecimal 精确计算
- package com.itlwc;
- import java.math.BigDecimal;
- public class Test {
- public static void main(String[] args) {
- BigDecimal bd1 = new BigDecimal("3.8");
- BigDecimal bd2 = new BigDecimal("0.7");
- BigDecimal bd3 = new BigDecimal("3.800");
- System.out.println("bd1 = " + bd1);
- System.out.println("bd2 = " + bd2);
- System.out.println("bd3 = " + bd3);
- System.out.println("bd1 + bd2 = " + bd1.add(bd2));
- System.out.println("bd1 - bd2 = " + bd1.subtract(bd2));
- System.out.println("bd1 * bd2 = " + bd1.multiply(bd2));
- System.out.println("bd1 / bd2 = "
- + bd1.divide(bd2, BigDecimal.ROUND_HALF_DOWN));
- System.out.println("bd3 / bd2 = "
- + bd3.divide(bd2, BigDecimal.ROUND_HALF_UP));
- // 将bd1与bd2进行比较
- if (bd1.compareTo(bd3) == 0) {
- System.out.println("bd1 = " + bd1 + " bd3 = " + bd3
- + " 则bd1与bd3是相等的!!");
- }
- // 1
- BigDecimal bigD1 = BigDecimal.ONE;
- // 10
- BigDecimal bigD2 = BigDecimal.TEN;
- // 0
- BigDecimal bigD3 = BigDecimal.ZERO;
- }
- }
- /*
- 打印结果:
- bd1 = 3.8
- bd2 = 0.7
- bd3 = 3.800
- bd1 + bd2 = 4.5
- bd1 - bd2 = 3.1
- bd1 * bd2 = 2.66
- bd1 / bd2 = 5.4
- bd3 / bd2 = 5.429
- bd1 = 3.8 bd3 = 3.800 则bd1与bd3是相等的!!
- */