09

it2023-12-18  64

Java的类包提供了一些常用类供开发人员使用,例如将基本数据类型封装起来的包装类,解决常见数学问题的Math类,生成随机数的Random类,以及处理日期、时间的相关类等。

一、包装类概述

Java是一种面向对象的编程语言,为了能把基本数据类型当作对象处理,Java设计了包装类的概念。包装类将Java的8个基本数据类型包装成成相应的类,这样就可以通过对象来调用各自的包装类中的方法。

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

一般我们要使用数字的时候,通常会使用内置数据类型,比如byte、int、long、double、float、short等,但是在实际开发中,我们需要使用对象,而不是内置数据类型。因此我们就需要了解将内置数据类型包装成对应的类,这样就可以实现面向对象编程了。

基本数据类型对应的包装类byteByteintIntegerfloatFloatcharCharactershortShortlongLongdoubledoublebooleanBoolean

2、包装类的继承关系

基本数据类型byte、int、short、long、double、float对应的分别是Byte类、Integer类、Short类、Long类、Double类、Float类,这6个类都是Number的子类。Byte类、Integer类、Short类、Long类这4个类是针对整数操作的类,包含的方法基本相同。Double类、Float类是针对浮点型操作的类,方法也基本相同。基本数据类型中boolean和char分别对应的是Boolean类和Character类,这两个类直接继承顶级父类Object类,包装类的继承关系如图:

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

public class Test1{ public static void main(String args[]){ Inyeger x = 10; x += 20; System.out.println(x); } } Console: 30

当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。

3、包装类的基本操作

(1)基本数据类型与对应包装类的操作

以Integer包装类及对应的int类型为例:

目的操作int ➡️ Integernew Integer(primitive)Integer ➡️ intInteger 对象.xxValue()

(3)基本数据类型与其他Java类的操作

以int类型及String类型为例:

目的操作int ➡️ StringString.valueOf(Primitive)String ➡️ intInteger.parseXxx()

(3)包装类与其他Java类之间的操作

以Integer类及String类为例:

目的操作Integer ➡️ StringInteger 对象.toString()String ➡️ Integernew Integer(String str)

二、Number类–Integer 类

1、Integer类的构造方法

Integer类有两种构造方法:

(1)Integer(int number)

以一个int型变量为参数创建Integer类对象:

Integer nubmer = new Integer(22);

(2)Integer(String str)

以一个String型变量为参数创建Integer类对象:

Integer nubmer = new Integer("33");

⚠️注意:如果要使用字符串变量创建Integer对象,字符串变量的值必须是数值型的,比如上述的“33“,否则会抛出NumberFormatException异常。

2、Integer类的常用方法

方法返回值功能描述valueOf(String str)Integer返回String型参数值的Integer对象parseInt(String str)int返回与String型参数值等价的int值toString()String返回一个表示Integer值的String对象toBinaryString(int i)String以二进制无符号整数的形式返回一个整数参数的字符串表示形式ToHexString(int i)String以十六进制无符号整数形式返回一个整数参数的字符串表示形式toOctalString(int i)String以八进制无符号整数形式返回一个整数参数的字符串表示形式Equals(Object IntegerObj)boolean比较对象与指定的对象是否相等intValue()int以int型返回Integer对象shortValue()short以short型返回Integer对象byteValue()bytr以byte型返回Integer对象compareTo(Integer anotherInteger)int对两个Integer对象进行数值比较,如果数值相等返回0,如果Integer数值小于anotherInteger数值返回负值;反之返回正值。

3、Integer类的常量

Integer提供了4个常量:

MAX_VALUE:表示int型可以取的最大值, 2 31 − 1 2^{31} -1 2311。MIN_VALUE:表示int型可以取的最小值, − 2 31 -2^{31} 231。SIZE:以二进制补码的形式表示int值的位数。TYPE:表示基本类型int的Class实例。

实例1:比较数值的大小进行类型转换

创建一个Demo类,是选使用Integer类的parseInt(String str)方法,将字符串转换为int型值,然后创建一个Integer对象,并调用equals()方法与转换的int型值进行比阿胶,最后使用Integer类的toBinaryString(int i)方法、ToHexString(int i)方法、toOctalString(int i)方法和toString()方法分别将int型数值转换为二进制、十六进制、八进制和不常使用的是十五进制的表示形式。

public class Demo { public static void main(String[] args) { // TODO Auto-generated method stub int num = Integer.parseInt("666"); Integer iNum = Integer.valueOf("666"); System.out.println("int型与integer类对象进行比较:"+iNum.equals(num)); String str2 = Integer.toBinaryString(num); //获取数字的二进制表示形式 String str3 = Integer.toHexString(num); //获取数字的十六进制表示形式 String str4 = Integer.toOctalString(num); //获取数字的八进制表示形式 String str5 = Integer.toString(num,15); //获取数字的十五进制表示形式 System.out.println("666的二进制表示为:"+str2); System.out.println("666的十六进制表示为:"+str3); System.out.println("666的八进制表示为:"+str4); System.out.println("666的十五进制表示为:"+str5); } } Console: int型与integer类对象进行比较:true 666的二进制表示为:1010011010 666的十六进制表示为:29a 666的八进制表示为:1232 666的十五进制表示为:2e6

实例2:输出Integer的最大、最小值和二进制位数

创建GetCon类,在控制台输出Integer类的最大值、最小值和二进制位数:

public class GetCon { public static void main(String[] args) { // TODO Auto-generated method stub int maxint = Integer.MAX_VALUE; int minint = Integer.MIN_VALUE; int intsize = Integer.SIZE; System.out.println("int类型可以取的最大值是:"+maxint); System.out.println("int类型可以取的最小值是:"+minint); System.out.println("int类型的二进制位数是:"+intsize); } } Console: int类型可以取的最大值是:2147483647 int类型可以取的最小值是:-2147483648 int类型的二进制位数是:32

三、小结

最新回复(0)