欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Java基础关键_012_包装类

Java基础关键_012_包装类

2025/2/28 3:44:22 来源:https://blog.csdn.net/lu_shao_feng/article/details/145860092  浏览:    关键词: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}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词