概述
Java中的包装类,读懂这篇就够了
前言
本期来和大家一起分享学习一下Java中的包装类。
As everyone know,Java是一门面型对象的语言,Java中的类把方法与数据连接到一起,构成了自包含式的处理单元。但是在Java中不能定义基本类型(Primitive Type)对象,为了能够将基本类型视为对象进行处理,并能够连接相关的方法,Java为每个基本类型都提供了包装类,如int类型数值的包装类Integer和boolean型数值的的包装类Boolean等,这样便可以吧这些基本数据类型转换为对象来处理了。需要说明的是,Java是可以直接处理基本类型的,但还是在有些情况下需要将其作为对象来处理,这是就需要将其转换为包装类了。
(本文中若有任何错误的观点说法,还请路过的大佬不吝赐教,感激不尽)
一、Integer
java.lang包中的Integer类、Long类和Short类,分别将基本数据类型int、long和short封装成一个类。由于这些类都是Number的子类,区别就是封装不同的数据类型,其中包含的方法基本相同,所以在这里我就以Integer类为例来介绍整个包装类。
Integer类在对象中包装了一个基本类型的int的值。该类的对象包含一个int类型的字段,此外,该类提供了多个方法,能够实现在int型和String型之间相互转换,同时还提供了一些其他一些处理int类型时非常有用的常量和方法。
1.1构造方法
Integer类有以下两种构造方法
(1)Integer(int number)
该方法以一个int类型变量作为参数来获取Integer对象
实例:
Integer number1 = new Integer(7);
(2)Integer(String str)
该方法以一个String类型的变量作为参数来获取Integer对象
实例:
Integer number2 = new Integer("15");
注意:
要用数值型String变量作为参数,比如123,否则将会抛出NumberFormatException异常
1.2常用方法
Integer类的常用方法如下面的表格所示:(偷个小懒,用Excel表格写一下)
Integer类中的parseInt()方法返回与调用该方法的数值字符串相应的整型(int)值。来吧,展示一段代码来说明parseInt()方法的应用。
代码示例:
/**
*该类用于测试parseInt()方法
*/
public class Test0 { //创建类
public static void main(String[] args) { //主方法
String str[] = {"89","12","10","18","35"}; //创建数组
int sum = 0; //创建int型变量
for (int i = 0; i < str.length; i++) { //遍历数组
int myint = Integer.parseInt(str[i]); //将数组中的每个元素都转换为int型
sum = sum + myint; //将数组中的元素相加
}
//输出计算结果
System.out.println("数组中各元素之和是:" + sum);
}
}
运行结果:
Integer类的toString()方法可将Integer对象转换为十进制字符串表示。toBinaryString()、toHexString()和toOctalString()方法分别将值转换成二进制、十六进制和八进制字符串。
代码示例:
/**
* 该类用于测试以下方法
* toBinaryString()、toHexString()和toOctalString()
*/
public class Test1 { //创建类
public static void main(String[] args) { //主方法
String str1 = Integer.toString(456); //获取数字的十进制表示
String str2 = Integer.toBinaryString(456); //获取数字的二进制表示
String str3 = Integer.toHexString(456); //获取数字的实例进制表示
String str4 = Integer.toOctalString(456); //获取数字的八进制表示
//输出结果
System.out.println("‘456’的十进制表示为:" + str1);
System.out.println("‘456’的二进制表示为:" + str2);
System.out.println("‘456’的十六进制表示为:" + str3);
System.out.println("‘456’的八进制表示为:" + str4);
}
}
运行结果:
1.3常量
Integer类提供了下面四个常量:
- MAX_VALUE:表示int类型可取的最大值(2的三十一次方减1)
- MIN_VALUE:表示int类型可取得最小值(-2的三十一次方)
- SIZE:用来以二进制补码形式表示int值的位数。
- TYPE:表示基本类型int的Class实例
代码示例:
/**
* 该类用于将Integer类的常量值输出
*/
public class Test2 { //创建类
public static void main(String[] args) { //主方法
//获取Integer的常量值
int maxint = Integer.MAX_VALUE;
int minint = Integer.MIN_VALUE;
int sizeint = Integer.SIZE;
//输出常量
System.out.println("int类型可取的最大值是:" + maxint);
System.out.println("int类型可取的最小值是:" + minint);
System.out.println("int类型的二进制位数是:" + sizeint);
}
}
运行结果:
二、Boolean
Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean类型的对象只包含一个类型为boolean的字段。此外,此类还为boolean和String的相互转换提供了许多方法,并提供了处理boolean时非常有用的其他一些常量和方法。
2.1构造方法
(1)Boolean(boolean value)
该方法创建一个表示value参数的Boolean对象
实例:
Boolean b = new Boolean(true);
(2)Boolean(String str)
该方法以String变量作为参数创建Boolean对象。如果String参数不为null且在忽略大小写时等于true,则分配一个表示true的值作为Boolean对象,否则获得一个false值的Boolean对象
实例:
Boolean bool = new Boolean(“ok”);
2.2常用方法
Boolean类的常用方法如下表所示:
代码示例:
/**
* 使用不同的构造方法创建Boolean对象,并调用booleanValue()方法
* 将创建的对象重新转换为boolean数据输出
*/
public class Test3 { //创建类
public static void main(String[] args) { //主方法
//创建Boolean对象
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean("ok");
//输出结果
System.out.println("b1:" + b1.booleanValue());
System.out.println("b2:" + b2.booleanValue());
}
}
运行结果:
2.3常量
Boolean提供了一下三个常量:
- TRUE:对应基值true的Boolean对象
- FALSE:对应基值false的Boolean对象
- TYPE:基本类型boolean的Class对象
三、Byte
Byte类将基本类型为byte的值包装在一个对象中。一个Byte类型的对象只包含一个类型为byte的字段。此外,该类还为byte和String相互转换提供了方法,并提供了其他一些处理byte时非常有用的常量和方法。
3.1构造方法
Byte类提供了以下两种构造方法的重载形式来创建Byte类对象。
(1)Byte(byte value)
通过该方法创建Byte对象,可表示指定的Byte值
实例:
byte b = 45;
Byte B = new Byte(b);
(2)Byte(String str)
通过这种方法创建的Byte对象,可表示String参数所指示的byte值
实例:
Byte b = new Byte(“12”);
注意:
要用数值型String 变量作为参数,如123,否则将会抛出NumberFormatExcep异常
3.2常用方法
Byte类的常用方法如下表所示:
3.3常量
Byte类中提供了如下四个常量:
- MIN_VALUE:byte类型可取的最小值
- MAX_VALUE:byte类型可取的最大值
- SIZE:用于以二进制补码形式表示byte值的位数
- TYPE:表示基本类型byte的Class实例。
四、Character
Character类在对象中包装一个接班类型为char的值。一个Character类型的对象包含类型为char的单个字段。该类提供了几种方法,以确定字符的类别(小写字母、数字等),并将字符从大写转换为小写,反之亦然。
4.1构造方法
Character类的构造方法的语法如下:
Character(char value)
该类的构造函数必须是一个char类型的数据。通过该构造函数创建的Character类型的对象包含由char类型参数提供的值。一旦Character类被创建,它包含的数值就不能改变了。
实例:
Character c = new Character(‘s’);
4.2常用方法
Character类提供了很多方法来完成对字符的操作,常用的方法如下表所示:
通过一段代码来介绍一下其中某些方法的使用。
代码示例:
/**
* 该类用于测试isUpperCase()方法和isLowerCase();方法的使用
*/
public class Test4 { //创建类
public static void main(String[] args) { //主方法
Character mychar1 = new Character('A'); //声明character对象
Character mychar2 = new Character('a'); //声明character对象
//调用方法,输出结果
System.out.println(mychar1 + "是大写字母吗?" + mychar1.isUpperCase(mychar1));
System.out.println(mychar2 + "是小写字母吗?" + mychar2.isLowerCase(mychar2));
}
}
运行结果:
4.3常量
Character类提供了大量表示特定字符的常量,举几个栗子:
- CONNECTOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”
- UNASSIGNED:返回byte型值,表示Unicode规范中的常规类别“Cn”
- TITLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类别“Lt”
五、Double
Double和Float包装类是对double和float基本类型的封装,它们都是Number的子类,又都是对小数的操作,所以常用的方法基本相同。这个模块主要介绍一下Double类,对于Float类可以参考Double类的相关介绍
Double类在对象中包装一个基本类型为double的值。每个Double类的对象都包含一个double类型的字段。此外,该类还提供了多个方法,可以将double转换为String,也可以将String转换为double,也提供了其他一些处理double时有用的常量和方法。
5.1构造方法
Double类提供了以下两种构造方法来获得Double对象
- Double(double value):基于double参数创建Double类对象。
- Double(String str):构造一个新分配的Double对象,表示用字符串double类型的浮点值
注意:
如果不是数值类型的字符串作为参数,则抛出NumberFormatException异常。
5.2常用方法
Double类的常用方法如下表所示:
5.3常量
Double提供了以下常量。
- MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数
- MIN_EXPONENT:返回int值,表示标准化double变量可能具有的最小指数
- NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值的常量。
- POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值的常量。
六、Number
抽象类Number是BigInteger、Byte、Double、Float、Integer、Long和Short类的父类,Number的子类必须是提供将表示的数值转换为byte、double、float、int、long和short的方法。例如,doubleValue()方法返回双精度值,floatValue()方法返回浮点值。
这些方法如下表所示:
Hello,各位亲爱的码友们!!!
由我原创编写的JavaSE基础部分的文章到这里就要和大家说再见了,很感谢那些在背后默默支持默默阅读我
更新的文章的人,感谢你们的支持,也感谢你们愿意花费您宝贵的时间来阅读我这个Java小白写出来的文字,希
望我的文章对您有所帮助。
从2020年4月17日我开始在CSDN上更新发表JavaSE基础部分的文章以来到今天已经整整87天了,这一路走
来让我学会了很多东西,让我明白做什么事情都贵在坚持。在这漫长又短暂的87天里,我有过坚持也有过懒惰,
有过成就感,也不止一次的想要放弃,但是我都坚持下来了。这样的方式我很喜欢,不仅加深了我对这部分内容
的认识,同时也磨练了自己耐心和毅力。
写到这里并不是终止,我会加油,继续努力,好好学习,会学习更多的知识和这里的朋友们交流经验,共同
成长,共同进步。
由衷的感谢CSDN平台给我这样的机会、感谢路过的码友们点开我的文章、感谢自己一直坚持到最后、感谢
......
7旅病娘
2020年7月12日19:48:57
最后
以上就是粗心流沙为你收集整理的Java中的包装类,读懂这篇就够了的全部内容,希望文章能够帮你解决Java中的包装类,读懂这篇就够了所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复