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

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
    }
}

http://www.kler.cn/a/562931.html

相关文章:

  • WPF10绑定属性
  • 重启 nginx
  • 36. Spring Boot 2.1.3.RELEASE 中实现监控信息可视化并添加邮件报警功能
  • 动态表头导出EasyExcel
  • ExpMoveFreeHandles函数分析和备用空闲表的关系
  • python曲线回归小案例教程
  • 全球首个平行推理模型,对标Claude3.7,零延迟
  • 机试刷题_NC17 最长回文子串【python】
  • OpenAPI Generator:API开发的瑞士军刀
  • JavaEE 编写Java程序,实现简单的echo程序(网络编程TCP实践练习)
  • 解决Spring Boot中LocalDateTime返回前端数据为数组结构的问题
  • 欢乐力扣:最长连续序列
  • Flink SQL怎么用?
  • Android 10.0 Settings中系统菜单去掉备份二级菜单
  • 【字符串】最长公共前缀 最长回文子串
  • 2025最新Flask学习笔记(对照Django做解析)
  • windows设置暂停更新时长
  • 【多模态大模型】GLM-4-Voice端到端语音交互机器人VoiceAI
  • Ubuntu本地使用AnythingLLM
  • 【解决idea2024.3.3版本Vue插件报错】