从零开始学Java之包装类有哪些?
一. 包装类
概念
我们知道,Java中的数据类型总体上分为基本数据类型和引用数据类型。引用类型的数据可以通过对象操作的形式进行使用,也就是说,我们可以通过对象的属性和方法来进行操作。但如果是基本数据类型的数据,我们能不能像操作对象那样来操作呢?为了实现这个目标,Java为8种基本数据类型分别设计了对应的类,我们称其为包装类(Wrapper Classes),或者称其为外覆类或数据类型类。因为这些包装类都是引用类型,所以我们就可以方便地操作这些数据的属性和方法了。
其实之所以为8种基本数据类型都设计出对应的包装类,从深层分析,主要是为了配合Java 5之后出现的泛型。在泛型的使用中,基本数据类型和泛型不能配合使用,即Primitive Types 和Generic不能混用。举个简单的例子,比如我们想使用ArrayList、HashMap等集合时,这些集合都需要指明集合中数据的泛型。而int、double等基本类型是不允许被使用的,因为这些集合容器的泛型都必须是Object类型,所以就需要这些包装类型了,如下图所示:
8个包装类
有了这8个包装类,我们就可以按照面向对象的思维来操作数据了,可以操作对象的属性和方法,也可以给对象赋null值,这是基本类型做不到的。我们来看看Java中的基本类型与其对应的包装类,如下表所示:
从上面的表中我们可以看出,基本上包装类的类名,就是把基本类型的首字母变成大写,除了Integer和Character特殊一点。另外,Byte、Short、Integer、Long、Float、Double这六个类,都是Number的子类,它们具有一些共同的类型转换方法,方便我们进行类型之间的转换。
二. 常用包装类
为了让大家更好地掌握这些包装类的用法及特性,小编在这里只把几个常用的包装类给大家介绍一下。
Integer简介
Integer类中包含了一个int类型的字段。该类提供了一些可以方便处理int类型的常量,比如获取整型的最大值和最小值等。另外该类还提供了多个方法,可以在 int类型和 String类型之间互相转换。
1.1 Integer中的常量
Integer类包含以下4个常量:
● MAX_VALUE:是一个常量值,值为 231-1,代表int类型能够表示的最大值;
● MIN_VALUE:是一个常量值,值为 -231,代表int类型能够表示的最小值;
● SIZE:以二进制补码的形式,表示 int值的比特位数;
● TYPE:代表基本类型 int 的 Class 实例对象。
1.2 Integer中的方法
Integer类中提供的常用方法如下表所示:
我们要注意,在将字符串转换为 int类型数值的过程中,如果字符串为非数值型的内容,转换时可能会出现NumberFormatException异常。
2. Byte简介
Byte类中内含了一个byte类型的字段,该类提供了一些可以方便处理byte值的常量和方法,方便了我们的操作。
2.1 Byte中的常量
Byte类中提供的常量如下:
● MIN_VALUE:byte类的最小值,-128;
● MAX_VALUE:byte类的最大值,127;
● SIZE:以二进制补码形式表示的 byte值位数;
● TYPE:表示byte的Class实例对象。
2.2 Byte中的方法
Byte类中的常用方法如下:
Float简介
Float类中内含了一个float类型的字段,该类提供了一些可以方便处理float值的常量和方法,方便了我们的操作。
3.1 Float中的常量
Float类的常量值如下所示:
● MAX_VALUE:表示float的最大值,为 1.4E38;
● MIN_VALUE:表示float的最小值,为3.4E-45;
● MAX_EXPONENT:float变量可能具有的最大指数;
● MIN_EXPONENT:float变量可能具有的最小指数;
● MIN_NORMAL:保存float类型值的最小标准值常量,即 2-126;
● NaN:保存float类型的非数值常量;
● SIZE:以二进制补码形式表示的float值的比特位数;
● TYPE:表示float类型的Class对象实例。
3.2 Float中的方法
Float类中的常用的方法如下表所示:
Double简介
Double类中内含了一个double类型的字段,该类提供了一些可以方便处理double值的常量和方法,方便了我们的操作。
4.1 Double中的常量
Double类中的常量如下所示:
● MAX_VALUE:表示double类型的最大值,1.8E308;
● MIN_VALUE:表示double类型的最小值,4.9E-324;
● NaN:表示double类型的非数字值;
● NEGATIVE_INFINITY:表示double类型负无穷大的常量值;
● POSITIVE_INFINITY:表示double类型正无穷大的常量值;
● SIZE:以二进制补码形式表示的double值的比特位数;
● TYPE:表示double类型的Class实例对象。
4.2 Double中的方法
Double类中的常用方法如下表所示:
Character简介
Character类用于对单个字符进行操作,内含了一个char类型的字段,该类提供了一些可以方便处理char值的方法,方便了我们的操作。
5.1 Character中的方法
Character类中的常用方法如下表所示:
5.2 代码案例
Character类的方法比较多,小编给大家设计了如下代码案例进行演示:
public class CharacterTest {
public static void main(String[] args) {
//构造一个Character对象,该方式已过时
Character character = new Character('A');
//比较两个对象是否相同,0表示相同;正数表示前者大于后者;负数表示前者小于后者
int result = character.compareTo(new Character('B'));
System.out.println(result); // 输出 -1,表示A小于B
//获取Character对象的第2种方式,注意参数必须是单引号括起来的字符型,
Character char02 = Character.valueOf('B');
//获取Character对象的第3种方式,常用该方式
Character char03='C';
//将大写字符转为小写字符
char lowerCase = Character.toLowerCase('Y');
System.out.println("lowerCase="+lowerCase);
String str="hello666";
for(int i=0;i
//判断每一个字符是否是字母
boolean isLetter = Character.isLetter(str.charAt(i));
System.out.println(str.charAt(i)+", 是字母吗?="+isLetter);
}
}
}
复制代码
Boolean简介
Boolean类中内含了一个boolean类型的字段,该类提供了一些可以方便处理boolean值的常量和方法,方便了我们的操作。
6.1 Boolean中的常量
Boolean类包含的常量如下所示:
● TRUE:代表值为true的常量;
● FALSE:代表值为false的常量;
● TYPE:表示boolean类型的Class实例对象。
6.2 Boolean中的方法
Boolean类中常用的方法如下表所示:
基本用法
现在我们已经知道有哪些包装类了,那么这些包装类怎么用呢?接下来我们就通过一些代码,来学习常用的包装类吧。
7.1 Integer的用法
我们先通过一段代码,来了解一下Integer的用法,因为在实际开发中,Integer是比较常用的包装类。
public class WrapperTest {
public static void main(String[] args) {
//Integer变量的几种定义方式
Integer i001 = new Integer(50);
Integer i002=new Integer("100");
//注意:将字符串转为数值型时,也要注意待转换的类型必须匹配,我们不能将非数字的字符串转为数值型,否则会出现NumberFormatException
//Integer i007=new Integer("hello");
Integer i003 = 100;
//利用静态方法,返回一个指定int值的Integer对象
Integer i004=Integer.valueOf(200);
//利用静态方法,返回指定String值的Integer对象
Integer i005=Integer.valueOf("300");
//第2个参数radix,表示基数,即当前采用的进制
Integer i006=Integer.valueOf("400",16);
System.out.println("i006="+i006);
//获取Integer的最大值与最小值
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}
复制代码
valueOf()方法是一个静态方法,用于返回给定参数的原生Number对象,其参数可以是原生数据类型和String等。如果该方法带有两个参数,那么第一个是字符串,第二个则是基数,用于表明要转换成的进制。
7.2 Double的用法
接下来我们再来看看Double的用法。
public class WrapperTest {
public static void main(String[] args) {
//Double类型的用法
//将数值型或字符串类型转为Double类型
Double d001 = new Double(100.1);
Double d002 = new Double("200.2");
//Double d007 = new Double("hello");
Double d003 = 300.3;
Double d004 =Double.valueOf(400.4);
//通过doubleValue()方法取double值
System.out.println("d004="+d004.doubleValue());
Double d005 =Double.valueOf("500.5");
//直接使用
System.out.println("d005="+d005);
//获取最大值和最小值
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
}
}
复制代码
7.3 字符串转包装类
有了包装类,我们就可以将字符串类型的数值转换成Integer或者是Double等类型。在下面的案例中,我们可以利用包装类提供的各个parseXXX()方法,来将字符串转为对应的包装类型。
public class WrapperTest {
public static void main(String[] args) {
//字符串转Integer或Double类型
String s1 = "123";
//方式1:
int i007 = Integer.parseInt(s1);
System.out.println("i007="+i007);
//方式2:
int i008 = Integer.valueOf(s1);
System.out.println("i008="+i008);
String s2 = "20.5";
//方式1:
double d006 = Double.parseDouble(s2);
System.out.println("d006="+d006);
//方式2:
double d007 = Double.valueOf(s2);
System.out.println("d007="+d007);
//java.lang.NumberFormatException,数字格式化异常
//String s3 = "hello";
String s3 = null;
System.out.println(Integer.parseInt(s3));
}
}
复制代码
在以上代码中,除了有Integer.parseInt()、Double.parseDouble()方法之外,还有Float.parseFloat()、Byte.parseByte()、Short.parseShort()、Boolean.parseBoolean()等方法可以将字符串转为对应的包装类。
但是我们要注意,在将字符串转为Integer或Double等类型时,并不是所有的字符串内容都可以转换成功,有可能会出现NumberFormatException异常,如下所示:
Exception in thread "main" java.lang.NumberFormatException: For input string: "hello"
7.4 类型间转换
Byte、Short、Integer、Long、Float、Double这六个类,有一个共同的父类Number。其中,Number提供了一组xxxValue()方法,可以用于将某种类型转换成其他的类型,案例如下:
public class WrapperTest {
@SuppressWarnings("null")
public static void main(String[] args) {
//类型间转换
Integer a = 100;
//将Integer转为Byte类型
Byte b = a.byteValue();
//将Integer转为Short类型
Short c = a.shortValue();
//将Integer转为Long类型
Long d = a.longValue();
//将Integer转为Float类型
Float e = a.floatValue();
//将Integer转为Double类型
Double f = a.doubleValue();
//取出数值的整数部分,将Integer转为int
int g = a.intValue();
System.out.println("a="+a+",b="+b+",c="+c+",d="+d+",e="+e+",f="+f+",g="+g);
//包装类转字符串,默认是按照10进制进行转换
String intStr = Integer.toString(1000);
String dobuleStr = Double.toString(200.5);
Byte by=126;
String byteStr=Byte.toString(by);
//将数字转换成二进制
String str1 = Integer.toBinaryString(num);
// 将数字转换成八进制
String str2 = Integer.toHexString(num);
// 将数字转换成十六进制
String str3 = Integer.toOctalString(num);
}
}
复制代码
每种包装类之间,都可以使用这些方法进行类型的转换。另外每种包装类都提供了对应的toString()或toBinaryString()/toHexString()/toOctalString()方法,可以将该包装类转为十进制、二进制、八进制和十六进制的String字符串,比如Integer.toString()、Double.toString()等,这里小编就不再一一赘述了。
猜你喜欢LIKE
相关推荐HOT
更多>>SEO优化
SEO优化,1、合理的title、description、keywords:搜索对着三项的权重逐个减小,title值强调重点即可;description把页面内容高度概括,不可过...详情>>
2023-04-03 15:11:51Python数据生产器
Python数据生产器,在软件开发、测试或者数据分析过程中,有时候会需要一些测试数据。做测试的时候,需要模拟真实的环境,但是又不能直接使用真...详情>>
2023-03-28 15:56:13Java集合是什么?Java集合详解
Java集合是Java编程语言中的一个重要概念,用于存储、管理和处理数据。Java集合框架提供了一组接口和类,用于实现常见的数据结构,如列表、栈、...详情>>
2023-03-20 19:12:47js查找字符串中指定字符的位置
另外,如果要查找一个字符串中所有出现的指定字符的位置,可以使用indexOf()方法结合循环来实现。然后,我们使用循环遍历字符串中的每一个字符...详情>>
2023-03-10 14:06:35