我是靠谱客的博主 潇洒美女,最近开发中收集的这篇文章主要介绍JAVA基础编程——基本数据类型的包装类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JAVA中的基本实际原则就是“一切皆对象”。而基本数据类型很显然不是对象,因此可以采用基本数据类型进行包装。

JAVA给出了一组包装类,分别为Byte、Short、Integer、Long、Float、Double、Character、Boolean,对应不同的基本数据类型。

上面的包装类又可以分为两种子类型:

  • 对象型包装类(Object直接子类):Character、Boolean
  • 数值型包装类(Number直接子类):Byte、Short、Integer、Long、Float、Double

Number是一个抽象类,其中一共定义了6个操作方法,分别是intValue/doubleValue/floatValue/byteValue/shortValue/longValue。

装箱与拆箱

基本数据类型和包装类之间的转换可以通过以下方法定义:

  • 装箱操作:将基本数据类型变为包装类,每个包装类的构造方法都可以接收各自数据类型的变量
  • 拆箱操作:从包装类中取出被包装的数据,利用从Number类中继承而来的一系列xxxValue方法完成
public class Demo {
public static void main(String args[]) {
Integer obj = new Integer(10);
int num = obj.intValue();
System.out.println(num);
}
}

简单地说,装箱就是有参构造,拆箱就是调用xxxValue方法获得内部数据。除了int外,double也是一样的操作。而boolean虽然是Object的子类,但也有同样的操作。

自动装箱和自动拆箱

自动装箱和自动拆箱是指上述的操作都是自动进行的,无需进行构造操作。

public class Demo {
public static void main(String args[]) {
Integer obj = 10;
int num = obj;
System.out.println(obj);
++obj;
System.out.println(obj);
}
}

结果为:

10
11

从上面的代码看,基本数据类型和包装类之间的转换是自动的,并不需要显式进行装箱和拆箱操作。

再看一段代码:

public class Demo {
public static void main(String args[]) {
Integer obj1 = 10;
Integer obj2 = 10;
Integer obj3 = new Integer(10);
System.out.println(obj1 == obj2);
System.out.println(obj1 == obj3);
System.out.println(obj2 == obj3);
System.out.println(obj2.equals(obj3));
}
}

结果为:

true
false
false
true

从上面的结果可以看出,自动装箱会保存对象到对象池中,而构造装箱则是会重新开辟新的堆内存空间。因此为了保证对象的有效比较,最好使用equals方法进行比较。

Object

既然知道基本数据类型和和包装类的转换操作,实际上也就可以利用Object来进行统一操作了。所有的引用数据类型都可以利用Object类来接收,而由于存在自动装箱机制,那么基本数据类型同样可以使用Object接收。

public class Demo {
public static void main(String args[]) {
Object obj = 10;
int tmp = (Integer)obj;
System.out.println(obj);
System.out.println(tmp);
System.out.println(tmp * 2);
}
}

结果为:

10
10
20

从上面的代码可以看出,可以使用Object接收基本数据,并可以直接打印输出,但并不能直接对Object类对象进行基本数据的计算,此时需要向下转型为Integer类型,才能够进行自动拆箱,并进行数据计算。

数据类型转换

而包装类中还存在数据类型转换的操作,在包装类中还提供了将String类数据转换为基本数据的方法,比如:

  • Integer类:public static int parseInt(String s)
  • Double类:public static double parseDouble(String s)
  • Boolean类:public static boolean parseBoolean(String s)

实际上,在给出的8种基本数据类型的包装类中,一共有7个类定义了parseXxx()的方法,可以实现将String变为基本数据类型。但是在Character类中并没有存在这样的方法,相反其对应的方法为charAt()方法。

public class Demo {
public static void main(String args[]) {
String str1 = "12";
String str2 = "12.3";
int var1 = Integer.parseInt(str1);
double var2 = Double.parseDouble(str2);
char var3 = str1.charAt(0);
System.out.println(var1);
System.out.println(var2);
System.out.println(var3);
}
}

结果为:

12
12.3
1

上面的操作可以将String字符串转换为相应的数据类型,但是如果字符串中包含非数字的字符内容,转换就会出现错误。因此实际开发中,需要严格对输入字符串进行检测,防止出错。

上面只是将字符串转换为基本数据类型,同样也可以将基本数据类型转换为字符串:

public class Demo {
public static void main(String args[]) {
int var1 = 10;
double var2 = 12.3;
boolean var3 = true;
String str1 = "" + var1;
String str2 = "" + var2;
String str3 = "" + var3;
String str4 = String.valueOf(var1);
String str5 = String.valueOf(var2);
String str6 = String.valueOf(var3);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(str5);
System.out.println(str6);
}
}

结果为:

10
12.3
true
10
12.3
true

上面的代码提供了两种基本数据类型转换为String的操作,之前提到字符串和基本数据类型相加会转换为字符串,因此一种操作就是与空字符串进行相加,另一种操作就是使用String中的valueOf方法进行转换。

最后

以上就是潇洒美女为你收集整理的JAVA基础编程——基本数据类型的包装类的全部内容,希望文章能够帮你解决JAVA基础编程——基本数据类型的包装类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部