Java基础知识回顾之常用数据类型
Java基础知识回顾之常用数据类型的包装类
简介
Java 虽然是一门面向对象的编程语言,但是其包括的8种基本数据类型并不支持面向对象的编程机制。也就说基本数据类型不具备“对象”的特性。例如:没有属性、没有方法可以调用。
为了解决8个基本数据类型的变量不能当成 Object 类型变量使用的问题,在Java中引入了包装类,通过包装类,可以将8个基本数据类型分别定义为相应的引用类型。
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
包装类的分类
- 对象型包装类(Object 直接子类):Character,Boolean。
- 数值型包装类(Number 直接子类):Byte,Short,Integer,Float,Double,Long;
Number类
Number是一个抽象类,里面一共定义了6个方法:intValue().doubleValue(),floatValue(),byteValue(),shortValue(),longValue().
基本数据类的装箱与拆箱
- 装箱操作:将基本数据类型变为包装类的形式
- 包装类中的构造方法都可以接收各自数据类的变量。
- 拆箱操作:从包装类之中取出被包装的数据
- 利用 Number 类中提供的方法完成(上面说到的 xxxValue)
代码示例
public class TestDemo {
public static void main(String[] args) {
/*** int类型 ***/
Integer obj = new Integer(10);// 将基本数据装箱
int temp = obj.intValue();// 将基本数据类型拆箱
System.out.println("Num:" + temp*3);
/*** Double类型 ***/
Double obj1 = new Double(10.3);// 将基本数据装箱
double temp1 = obj1.doubleValue();// 将基本数据类型拆箱
System.out.println("Num:" + temp1 * 3);
/*** Boolean类型 ***/
Boolean obj2 = new Boolean(true);// 将基本数据装箱
boolean temp2 = obj2.booleanValue();// 将基本数据类型拆箱
System.out.println(temp2);
}
}
自动拆箱与装箱
public class Demo {
public static void main(String[] args) {
Integer obj = 10;// 自动装箱
int temp = obj;// 自动拆箱
obj++;
System.out.println("Num:" + temp * obj);
}
}
使用包装类声明的变量比较
通过下面的代码可以看到一点,就是使直接赋值的方式,产生的对象是相等的,但是使用 new
关键产生就不相等了。这点和 String 类的声明一致。在对象作为比较的时候,最好使用 equals()
public class TestDemo {
public static void main(String[] args) {
Integer obja = 10;// 直接赋值
Integer objb = 10;// 直接赋值
Integer objc = new Integer(10);
System.out.println(obja == objb); // true
System.out.println(obja == objc); // false
System.out.println(objb == objc); // false
// 判断内容是否相同要用equals()
System.out.println(obja.equals(objc)); // true
}
}
使用 Object 类操作
public class TestDemo {
public static void main(String[] args) {
// Integer 操作
Object obj = 10;
int num = (Integer) obj;
System.out.println("Num=" + num * 3);
// Double 操作
Object obj1 = 10.3;
double num1 = (Double) obj1;
System.out.println("Num=" + num1 * 3);
}
}
数据类型转换
就是使用包装类的方法,对常用的数据类型进行转换。下面列出一部分:
- Integer 类: public static int parseInt(String s);
- Double 类: public static double parseDouble(String s);
- Boolean 类:public static boolean parseBoolean(String s);
public class TestDemo {
public static void main(String[] args) {
// int
String intStr = "123";
int numInt = Integer.parseInt(intStr);
// double
String doubleStr = "1.3";
double numDouble = Double.parseDouble(doubleStr);
// boolean
String str = "true";
boolean flag = Boolean.parseBoolean(str);
}
}