https://www.shiyanlou.com/courses/111/labs/1176/document
Java语言是面向对象的,但Java中的基本数据类型却不是面向对象的。这在实际使用过程中造成了诸多不便。为了解决此问题,Java语言的设计者们在设计类时,为每种基本数据类型也设计了一个对应的类。这八个和基本数据类型对应的类统称为包装类
(Wrapper Class),也称为外覆类或数据类型类。
包装类均位于java.lang包中,下表给出了包装类和基本数据类型的对应关系:
基本数据类型 | 对应包装类 |
---|---|
byte | Byte |
boolean | Boolean |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
包装类的用途主要包含两种:
- 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
- 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
下面我们通过一个例子来进一步认识包装类。
比较Double类型
首先你应该知道double
和Double
的区别,前者是基本的数据类型,后者是引用类型,即包装类。我们可以直接使用普通运算符“==
”对基本数据类型进行比较,但如果将“==
”用于比较引用类型的话,只会判断其内存地址是否相同,并且结果通常是否定的。
在Eclipse中创建项目DoubleCompare
,新建一个com.shiyanlou.course
包,并创建DoubleCompare
类。
在该类的main()
方法中,定义两个含有数字的字符串并将其转换为Double类型的数据。
String s_1 = "123.321";
String s_2 = "567.765";
//显然,这里的123.321和567.765都不是数值,而是“一句话”
//你也可以自定义这些数字
Double num_1 = Double.parseDouble(s_1);
Double num_2 = Double.parseDouble(s_2);
//定义了Double类型的数据,并将字符串转换为双精度浮点数赋予其值
上面的parseDouble(String s)
就是Double
类中自带的将字符串中的数字转换为double
类型的方法。
我们再将其输出。
System.out.println("number 1: " + num_1);
System.out.println("number 2: " + num_2);
然后我们来比较这两个数据,主要代码如下:
switch (num_1.compareTo(num_2)) {
case -1:
System.out.println("number 1 is smaller than number 2");
break;
case 0:
System.out.println("number 1 is equal to number 2");
break;
case 1:
System.out.println("number 1 is bigger than number 2");
break;
}
相信你能够理解这个分支语句的含义。需要特别说明的是,compareTo(Double anotherDouble)
也是Double类提供的一个方法,用于比较两个Double类型数据的大小,返回值为int
类型,-1
、0
、1
分别代表小于、等于和大于。
该案例的完整代码如下图所示: