当前位置: 首页 > news >正文

Java基础关键_012_包装类

目  录

一、基本数据类型对应的包装类

1.概览

2.说明

二、包装类

1.最大值与最小值

2.构造方法

3.常用方法(Integer为例)

(1)compare(int x, int y)

(2)max(int a, int b) 和 min(int a, int b)

(3)parseInt(String s)

(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)

(5)valueOf(int i)、valueOf(String s)

三、String、int、Integer 间的相互转换

四、自动装箱与自动拆箱

五、整数型常量池

六、BigInteger 

1.说明

2.常用方法

 七、BigDecimal

1.说明

2.其他常用方法 

八、数字格式化

1.说明

2.实例


一、基本数据类型对应的包装类

1.概览

基本数据类型与包装类型

基本数据类型包装数据类型
bytejava.lang.Byte
shortjava.lang.Short
intjava.lang.Integer
longjava.lang.Long
floatjava.lang.Float
doublejava.lang.Double
booleanjava.lang.Boolean
charjava.lang.Character

2.说明

  1. 包装类是引用数据类型;
  2. 基本数据类型对应的包装类中,前六项数字类型都继承了 Number 类;
  3. Number 类提供了 byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()方法,可以将包装类型转换为基本数据类型,该过程称为拆箱;
  4. Boolean 的拆箱方法是 booleanValue();
  5. Character 的拆箱方法是 charValue()。

二、包装类

1.最大值与最小值

public class PackageTest {
    public static void main(String[] args) {
        System.out.println(Byte.MAX_VALUE); // 127
        System.out.println(Byte.MIN_VALUE); // -128

        System.out.println(Short.MAX_VALUE);    // 32767
        System.out.println(Short.MIN_VALUE);    // -32768

        System.out.println(Integer.MAX_VALUE);  // 2147483647
        System.out.println(Integer.MIN_VALUE);  // -2147483648

        System.out.println(Long.MAX_VALUE); // 9223372036854775807
        System.out.println(Long.MIN_VALUE); // -9223372036854775808

        System.out.println(Float.MAX_VALUE);    // 3.4028235E38
        System.out.println(Float.MIN_VALUE);    // 1.4E-45

        System.out.println(Double.MAX_VALUE);   // 1.7976931348623157E308
        System.out.println(Double.MIN_VALUE);   // 4.9E-324
    }
}

2.构造方法

  1. 通过构造方法将基本数据类型包装成引用数据类型,该过程称为装箱;
  2. 若数字中类型不一致,会抛出数字格式化异常;
  3. jdk 9 之后,被标注已过时。

3.常用方法(Integer为例)

(1)compare(int x, int y)

public class PackageTest {
    public static void main(String[] args) {
        System.out.println(Integer.compare(1, 9));  // 输出:-1
        System.out.println(Integer.compare(8, 2));  // 输出:1
        System.out.println(Integer.compare(5, 5));  // 输出:0
    }
}

(2)max(int a, int b) 和 min(int a, int b)

public class PackageTest {
    public static void main(String[] args) {
        System.out.println(Integer.max(1, 9));  // 输出:9
        System.out.println(Integer.min(1, 9));  // 输出:1
    }
}

(3)parseInt(String s)

        将字符串数字转换为数字类型。

public class PackageTest {
    public static void main(String[] args) {
        System.out.println(Integer.parseInt("123"));    // 输出:123
        System.out.println(Integer.parseInt("123" + 1));    // 输出:1231
        System.out.println(Integer.parseInt("123") + 1);    // 输出:124
    }
}

(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)

        分别获取数字 二进制、十六进制、八进制 的字符串表示形式。

public class PackageTest {
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(20)); // 10100
        System.out.println(Integer.toHexString(20));    // 14
        System.out.println(Integer.toOctalString(20));  // 24
    }
}

(5)valueOf(int i)、valueOf(String s)

        将 基本数据类型 int 或字符串 转换成 Integer ,且字符串必须是数字字符串,否则会抛出数字格式化异常。

public class PackageTest {
    public static void main(String[] args) {
        System.out.println(Integer.valueOf(20));    // 输出:20
        System.out.println(Integer.valueOf("123")); // 输出:123
    }
}

三、String、int、Integer 间的相互转换

public class PackageTest {
    public static void main(String[] args) {
        /**
         * String ——> int 转换
         */
        String s1 = "123";
        int i1 = Integer.parseInt(s1);
        System.out.println("[ String ——> int 转换 ]");
        System.out.println("i1 = " + i1); // 123
        System.out.println("i1 + 1 = " + (i1 + 1));   // 124

        /**
         * int ——> String 转换
         */
        int i2 = 123;
        String s2 = i2 + "";
        System.out.println("[ int ——> String 转换 ]");
        System.out.println("s2 = " + s2);   // 123
        System.out.println("s2 + 1 = " + (s2 + 1)); // 1231

        String s3 = Integer.toString(i2);
        System.out.println("s3 = " + s3);   // 123
        System.out.println("s3 + 1 = " + (s3 + 1)); // 1231

        /**
         * String ——> Integer 转换
         */
        String s4 = "123";
        Integer i3 = Integer.valueOf(s4);
        System.out.println("[ String ——> Integer 转换 ]");
        System.out.println("i3 = " + i3);   // 123
        System.out.println("i3 + 1 = " + (i3 + 1)); // 124

        /**
         * Integer ——> String 转换
         */
        Integer i4 = 123;
        String s5 = i4.toString();
        System.out.println("[ Integer ——> String 转换 ]");
        System.out.println("s5 = " + s5);   // 123
        System.out.println("s5 + 1 = " + (s5 + 1)); // 1231

        /**
         * int ——> Integer 转换
         */
        int i5 = 123;
        Integer i6 = Integer.valueOf(i5);
        System.out.println("[ int ——> Integer 转换 ]");
        System.out.println("i6 = " + i6);   // 123
        System.out.println("i6 + 1 = " + (i6 + 1)); // 124

        /**
         * Integer ——> int 转换
         */
        Integer i7 = 123;
        int i8 = i7.intValue();
        System.out.println("[ Integer ——> int 转换 ]");
        System.out.println("i8 = " + i8);   // 123
        System.out.println("i8 + 1 = " + (i8 + 1)); // 124
    }
}

四、自动装箱与自动拆箱

        jdk 5 新增,是编译阶段的功能。

public class Test {
    public static void main(String[] args) {
        // 自动装箱,实际上是 Integer i1 = new Integer(10);
        Integer i1 = 10;

        // 自动拆箱,实际上是 int i2 = i1.intValue();
        int i2 = i1;
    }
}

五、整数型常量池

public class Test {
    public static void main(String[] args) {
        Integer i1 = 127;
        Integer i2 = 127;
        System.out.println(i1 == i2);   // true

        Integer i3 = 128;
        Integer i4 = 128;
        System.out.println(i3 == i4);   // false
    }
}

        为什么会造成这样的结果呢?

        因为 [-128,127] 较为常用,为提高效率,Java 提供了整数型常量池。该常量池是一个 Integer 数组,存储了256个 Integer 引用,只要在这个范围,直接从整数型常量池中获取。


六、BigInteger 

1.说明

  1. 为了解决整数超过 long 最大值的问题,Java提供了一种引用数据类型 java.math.BigInteger;
  2. 它的父类是 Number 类。
public class Test {
    public static void main(String[] args) {
        long l = 999999999999999999L;   // long类型最大值
        System.out.println("l = " + l);

        BigInteger b = new BigInteger("999999999999999999999999999");   // BigInteger类型
        System.out.println("b = " + b);
    }
}

2.常用方法

public class Test {
    public static void main(String[] args) {
        BigInteger b1 = new BigInteger("2");
        BigInteger b2 = new BigInteger("3");
        BigInteger b3 = new BigInteger("-4");

        System.out.println("b1 + b2 = " + b1.add(b2));  // 加法
        System.out.println("b1 - b2 = " + b1.subtract(b2));  // 减法
        System.out.println("b1 * b2 = " + b1.multiply(b2));  // 乘法
        System.out.println("b1 / b2 = " + b1.divide(b2));   // 除法
        System.out.println("b1 % b2 = " + b1.remainder(b2));    // 取余
        System.out.println("b1 ^ 2 = " + b1.pow(2));   // 幂
        System.out.println("b1.compareTo(b2) = " + b1.compareTo(b2));   // 比较
        System.out.println("b1.max(b2) = " + b1.max(b2));   // 取大
        System.out.println("b1.min(b2) = " + b1.min(b2));   // 取小
        System.out.println("b3.abs() = " + b3.abs());   // 绝对值
        System.out.println("b1.sqrt() = " + b1.sqrt());   // 平方根
    }
}


 七、BigDecimal

1.说明

  1. 为了解决浮点数超过 double 最大值的问题,Java提供了一种引用数据类型 java.math.BigDecimal;
  2. 它的父类是 Number 类;
  3. 常用于财务软件。

2.其他常用方法 

public class Test {
    public static void main(String[] args) {
        BigDecimal b = new BigDecimal("520.1314");
        System.out.println(b.movePointLeft(1)); // 向左移动一位
        System.out.println(b.movePointRight(1));    // 向右移动一位
    }
}

八、数字格式化

1.说明

  1. java.text.DecimalFormat 类是用来数字格式化的;
  2. 常用格式:
    1. 三个数字为一组,每组之间使用逗号间隔,保留两位小数;
    2. 三个数字为一组,每组之间使用逗号间隔,保留四位小数,不够补0。

2.实例

public class Test {
    public static void main(String[] args) {
        DecimalFormat df1 = new DecimalFormat("###,###.##");
        System.out.println(df1.format(5201314.1314));    // 5,201,314.13

        DecimalFormat df2 = new DecimalFormat("###,###.0000");
        System.out.println(df2.format(5201314.13));   //5,201,314.1300
    }
}

相关文章:

  • Linux的文件与目录管理
  • Redis7——基础篇(八)
  • Visual Studio Code FAQ
  • 零基础学习机器学习分类模型
  • 【Linux】进程状态(二)
  • 有问题的两题
  • 2024大模型技术全景解构:从开源生态到商业落地的深度博弈
  • SpringWeb
  • 初识Skywalking
  • 基于MATLAB红外弱小目标检测MPCM算法复现
  • libGL.so.1: cannot open shared object file: No such file or directory-linux022
  • 数据结构绪论
  • 如何快速开放 Linux 系统中的任意端口?
  • Idea2024中搭建JavaFX开发环境并创建运行项目
  • 如何配置ssh免密登录
  • 根据经纬度获取时区并返回当前时间
  • MybatisPlus学习要点记录(更新中)
  • 在使用 npm link 进行本地 npm 包调试时,是否需要删除项目中已安装的依赖包取决于你的调试场景和依赖管理方式
  • leetcode209------长度最小的子数组、滑动窗口
  • TCP/IP 5层协议簇:数据链路层(交换机工作原理)
  • 做网站用的到java吗/网页制作公司
  • 焦作会计做继续教育在哪个网站/seo经典案例
  • 沈阳网站建设哪家做得好/seo的优化技巧和方法
  • 外贸仿牌网站/中国免费网站服务器主机域名
  • 网站制作好了怎么上传/网页设计师
  • 建设银行人力资源招聘网站/网站代理公司