一、前言:
上次我们将到了 java.lang.* 下的包装类:Integer。这次我讲一下基本数据类型中的:布尔型(boolean)对应的包装类(Boolean)。注意:还有对包装类:Integer进行一些补充。
(1) 首先我们一定的学习了解到:能够将基本数据类型的值包装为引用数据类型的对象的类称为包装类。
二、介绍Boolean包装类中的方法:
首先我们知道boolean类型的值永远只有两种:"true"和"false",所以说涉及到它的方法不会有太多。相较于包装类Integer对应的int类型的值的"样式"有很多种、包装类Character 对应的char类型的值可以是汉字、可以是数字、也可以是英文字母或者一些特殊符号,所以像这些举例的包装类涉及的方法肯定会多一些。
(1) 构造方法:(下方会解释怎么用)
1.首先先解释上面第一个构造方法(也是我们最常见最基本的一个),测试如下:
package com.fs.packet;
public class Test_Boolean01 {
public static void main(String[] args) {
//包装类:就是把相应的基本类型的值包装成一个对象
Boolean bl01 = new Boolean(true); //这里的参数value的类型一定是:boolean
System.out.println("对象bl01所指向的值为:"+bl01);
Boolean bl02 = new Boolean(false);
System.out.println("对象bl02所指向的值为:"+bl02);
}
}
代码运行结果:(可以发现输出的:都是各自对象所指向的boolean值)
2. 接着来看上面第二个构造方法:
<1>它的意思其实是只要参数:String s 的值不为null(空),且不管输入的字符串是大小写,只要是组成"true"这个样子的,它的对象所指向的值都是布尔型"true",测试如下:
package com.fs.packet;
public class Test_Boolean01 {
public static void main(String[] args) {
//无论是全部小写、全部大写还是大小写相互间隔都有的情况下:只要与”true“一样,对象的表示的值就是true
Boolean b1 = new Boolean("true");
Boolean b2 = new Boolean("TRUE");
Boolean b3 = new Boolean("tRUE");
Boolean b4 = new Boolean("trUe");
if(b4.equals(true)){ //这个方法后面会讲到原理
System.out.println("yes");
}else{
System.out.println("no");
}
if(b4){ //彻底的验证构造方法创建的对象指向的值是布尔型
System.out.println("b4对象指向的值是布尔型值,不是字符串");
}
System.out.println("b1,b2,b3,b4对应所指向的值分别是:"+b1+" "+b2+" "+b3+" "+b4);
}
}
代码运行结果:(可以发现输出的:都是各自对象所指向的boolean值)
<2> 当然也是只要不为null(空),且忽略大小写的影响,只要是组成"false"这个样子的,它的对象所指向的值都是布尔型"false",测试如下:
package com.fs.packet;
public class Test_Boolean01 {
public static void main(String[] args) {
//无论是全部小写、全部大写还是大小写相互间隔都有的情况下:只要与”false“一样,对象的表示的值就是false
Boolean b1 = new Boolean("false");
Boolean b2 = new Boolean("FALSE");
Boolean b3 = new Boolean("faLSE");
Boolean b4 = new Boolean("FALse");
if(b1.equals(true)){ //这个方法后面会讲
System.out.println("yes");
}else{
System.out.println("no");
}
if(!b1){ //彻底的验证构造方法创建的对象指向的值是布尔型
// 注意这里变成!b1(非b1),因为不这样写:因为b1对象指向的值是false,就不会输出提示,改成非变成true就没事了
System.out.println("b1对象指向的值是布尔型值,不是字符串");
}
System.out.println("b1,b2,b3,b4对应所指向的值分别是:"+b1+" "+b2+" "+b3+" "+b4);
}
}
代码运行结果:(可以发现输出的:都是各自对象所指向的boolean值)
<3>也就是如果是空(null)、空格、或者字符串是其他除了"true"与"false"以外的任意字符串等等,它的对象所指向的boolean值都是false。测试如下:
package com.fs.packet;
public class Test_Boolean01 {
public static void main(String[] args) {
//无论是全部小写、全部大写还是大小写相互间隔都有的或者是数字、其他特殊符号的情况下:只要与"true"或者"false"不一样,对象的表示的值就是false
Boolean b1 = new Boolean("123"); //测试数字
Boolean b2 = new Boolean("abc"); //测试其他英文字母组合
Boolean b3 = new Boolean(""); //测试空(null)
Boolean b4 = new Boolean(" "); //测试空格
if(b1.equals(false)){ //这里下面一样会介绍这个方法,其实就是和截图里的解释的意思一样
System.out.println("yes");
}else{
System.out.println("no");
}
if(!b1){ //彻底的验证构造方法创建的对象指向的值是布尔型
// 注意这里变成!b1(非b1),因为不这样写:因为b1对象指向的值是false,就不会输出提示,改成非变成true就没事了
System.out.println("b1对象指向的值是布尔型值,不是字符串");
}
System.out.println("b1,b2,b3,b4对应所指向的值分别是:"+b1+" "+b2+" "+b3+" "+b4);
}
}
代码运行结果:(可以发现输出的:都是各自对象所指向的boolean值)
(2) 其他有趣方法:
1.就是上面测试时用到的equals()方法:
言外之意就是讲一个Boolean对象指向的值与参数里的那个对象指向的值如果一样返回true,否则返回false。
<1>其他测试已经在上面测试完,现在展示空(null)与空格情况。
package com.fs.packet;
public class Test_Boolean01 {
public static void main(String[] args) {
Boolean b3 = new Boolean(""); //测试空(null)
Boolean b4 = new Boolean(" "); //测试空格
if(b3.equals(false)){
System.out.println("yes");
}else{
System.out.println("no");
}
if(b4.equals(false)){
System.out.println("yes");
}else{
System.out.println("no");
}
System.out.println("b3,b4对应所指向的值分别是:"+b3+" "+b4);
}
}
代码运行结果:(我们发现了对象为null,或者空格情况下,它与参数对象指向的值:都是false,相同,所以都输出yes)
2. 就是与我们之前讲包装类:Integer 时和它很像的一些方法:(就是基本数据类型与对象(引用数据类型)之间的转化时可以用的方法)
这里我简单讲吧:因为讲Integer时讲的很细,自己可以拿方法去试一试
<1>Boolean -> boolean
<2> String -> boolean
<3>
boolean -> String
Boolean -> String
<4>
boolean -> Boolean
String -> Boolean
三、补充上次包装类Integer:
(1)案例:
package com.fs.packet;
public class Test_Integer01 {
public static void main(String[] args) {
//Integer
int value = 10;
Integer it = new Integer(value);
System.out.println("it对象指向的值为:"+it);
//jdk 1.5 之后
//可以这么写
Integer it1 = 20;
System.out.println("it1对象指向的值为:"+it1);
}
}
代码运行结果: (结果没有任何问题,分别输出各自对象所指向的值)
原因:
为什么说在jdk1.5之前不行:因为 15 是不是一个基本数据类型,它是值类型,而 it2 是一个对象,因为对象是属于引用类型的,它们两个存的值都不一样,不能这样直接赋值。但是在jdk1.5之后,为了简化我们编程的过程,可以直接这么写,我们把这个过程叫做:自动装箱 。(也就是本来要写二步骤,但是直接可以省略第一步,直接自动包装基本数据类型成对应的对象(引用类型),也就是其他包装类也能这样简写,虚拟机它会在底层,内存自动new一个对象帮你封装,不用自己写)