当前位置: 首页 > 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); // 127System.out.println(Byte.MIN_VALUE); // -128System.out.println(Short.MAX_VALUE);    // 32767System.out.println(Short.MIN_VALUE);    // -32768System.out.println(Integer.MAX_VALUE);  // 2147483647System.out.println(Integer.MIN_VALUE);  // -2147483648System.out.println(Long.MAX_VALUE); // 9223372036854775807System.out.println(Long.MIN_VALUE); // -9223372036854775808System.out.println(Float.MAX_VALUE);    // 3.4028235E38System.out.println(Float.MIN_VALUE);    // 1.4E-45System.out.println(Double.MAX_VALUE);   // 1.7976931348623157E308System.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));  // 输出:-1System.out.println(Integer.compare(8, 2));  // 输出:1System.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));  // 输出:9System.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"));    // 输出:123System.out.println(Integer.parseInt("123" + 1));    // 输出:1231System.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)); // 10100System.out.println(Integer.toHexString(20));    // 14System.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));    // 输出:20System.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); // 123System.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);   // 123System.out.println("s2 + 1 = " + (s2 + 1)); // 1231String s3 = Integer.toString(i2);System.out.println("s3 = " + s3);   // 123System.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);   // 123System.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);   // 123System.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);   // 123System.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);   // 123System.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);   // trueInteger 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.13DecimalFormat df2 = new DecimalFormat("###,###.0000");System.out.println(df2.format(5201314.13));   //5,201,314.1300}
}
http://www.lryc.cn/news/543488.html

相关文章:

  • 【react】TypeScript在react中的使用
  • vllm的使用方式,入门教程
  • IDEA 使用codeGPT+deepseek
  • vue3中测试:单元测试、组件测试、端到端测试
  • 机器学习介绍与数据集
  • React 源码揭秘 | 更新队列
  • 关于网络端口探测:TCP端口和UDP端口探测区别
  • Vue.js 中使用 JSX 自定义语法封装组件
  • 设计模式教程:备忘录模式(Memento Pattern)
  • 使用 C# 以api的形式调用 DeepSeek
  • CS5366AN:高集成Type-C转HDMI 4K60Hz芯片的国产突破
  • 瑞芯微RK安卓Android主板GPIO按键配置方法,触觉智能嵌入式开发
  • Dify自定义工作流集成指南:对接阿里云百炼文生图API的实现方案
  • 前端项目配置 Nginx 全攻略
  • 基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
  • 电子电气架构 --- 主机厂电子电气架构演进
  • 物联网通信应用案例之《智慧农业》
  • Java注解的原理
  • AI知识架构之神经网络
  • OpenGL 04--GLSL、数据类型、Uniform、着色器类
  • 学习笔记06——JVM调优
  • 深度学习(3)-TensorFlow入门(常数张量和变量)
  • 3-2 WPS JS宏 工作簿的打开与保存(模板批量另存为工作)学习笔记
  • 【GO】学习笔记
  • 【TypeScript】ts在vue中的使用
  • 2025前端框架最新组件解析与实战技巧:Vue与React的革新之路
  • Elasticsearch 的分布式架构原理:通俗易懂版
  • 【DeepSeek】【GPT-Academic】:DeepSeek集成到GPT-Academic(官方+第三方)
  • 2.部署kafka:9092
  • 学习路之PHP --TP6异步执行功能 (无需安装任何框架)