千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:成都千锋IT培训  >  技术干货  >  从零开始学Java之包装类有哪些?

从零开始学Java之包装类有哪些?

来源:千锋教育
发布人:gxy
时间: 2023-04-14 14:56:30

  一. 包装类

包装类

  概念

  我们知道,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

实现垂直居中的几种方法,不知道宽高的情况下如何实现元素水平垂直居中?

2023-04-12

小程序路由跳转

2023-04-06

经典面试题:static加载机制你知道吗?

2023-03-23

最新文章NEW

从零开始学Java之包装类有哪些?

2023-04-14

说说React中onClick绑定后的工作原理

2023-04-07

说说gulp和webpack的区别

2023-04-06

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>