wrapper包装java_java Object 类 与 Wrapper包装类

Object类

java.lang.Object类1. Object 类是所有java类的根父类2. 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类3. Object类中的功能(方法与属性)具有通用性

属性: 无

方法: equals() toString() getClass().....

包装类

什么是包装类?为什么需要包装类? 这是大家要了解的

对于java中的基本数据类型我们如果想要把当当做类来使用怎么办呢? 如果想要对这些基本数据类型直接调用一些方法来操作的话 怎么做呢?

由以上就产生了Wrapper包装类(这在python中叫装饰器)

包装类作用:

java提供了8种基本数据类型的对应的包装类, 使得基本数据类型的变量有了类的特征

掌握:基本数据类型

1: 是针对八种基本数据类型定义的相应的引用数据类型---包装类(封装类)2: 有了类的特征就可以调用类的方法3: 我们希望java的基本数据类型也有java面向对象的特殊所以定义了 包装类 把基本数据类型的特殊都封装在对应的类中

22b59c589f29a3dde5cdadcd12beb0a9.png

基本数据---->Wrapper

基本数据类型转化为包装类:调用包装类的构造器

//基本数据转化为Wrapper : 直接调用包装类的构造器即可

public voidtestOne() {int num1 = 10;

Integer integer= newInteger(num1);

System.out.println("基本数据转化为包装类的结果:" +integer);

Float f= new Float(3.5);

System.out.println(f);

}

Wrapper ---> 基本数据

Wrapper 转化为基本数据类型: 调用Wrapper包装类的  XXValue()方法

//Wrapper 转化为 基本数据 : 直接调用XXValue() 方法

public voidWrapperToBasic() {

Integer integer= new Integer(34);int num =integer.intValue();

System.out.println("Wrapper--->基本数据:"+num);

Float f= new Float(4.6f);float fl =f.floatValue();

System.out.println("Float ----> 基本数据类型:"+fl);

}

基本数据,Wrapper----> String

基本数据和包装类转化为String : 调用String重载的valueOf()方法

//基本数据,Wrapper ---> String : 基本数据和包装类转化为String 直接调用String的valueOf()方法

public voidbasicWrapperToString() {//方法一直接转化

int num = 10;

System.out.println("这是num" + num); //直接加减//方法二调用String的valueOf()

int num1 = 20;

String strNum1=String.valueOf(num1);

System.out.println("基本数据转化为String:"+strNum1);

Integer integer= new Integer(35);

String strInteger=String.valueOf(integer);

}

String ---> 基本数据类型,Wrapper

String 转化为基本数据类型和包装类 需要调用包装类的parseXX()方法

//String ---> 基本数据,Wrapper : 调用包装类的paseXX

public voidStringToBsicsWrapper() {

String str= "123"; //必须是转化的对应类型的字符, 转为int那么久必须是字符串类型的int

Integer integerStr =Integer.parseInt(str);

System.out.println(integerStr);

}

错误的

public voidStringToBsicsWrapper() {

String str= "老王";

Integer integerStr= Integer.parseInt(str); //这样是错误的 因为你要转化为int那么String就要是字符串类型的int "123"

System.out.println(integerStr);

}

装箱子:

//装箱子: 转化为String//需要先把对应的信息转化为包装类 有了类的特征就可以调用类的方法了

public voidpack(){int num = 30;

Integer integer= newInteger(num);

String str=integer.toString();

System.out.println("pack:"+str);}

转化

方法

演示

基本数据转为Wrapper

直接调用Wrapper的构造器

Integer in= new  Integer(30);

Wrapper--->基本数据类型

调用包装类的XXXValue()方法

Integer integer = new Integer(34);

int num = integer.intValue();

基本数据,Wrapper--->String

调用String的valueOf()方法

int num1 = 20;

String strNum1 = String.valueOf(num1);

String----->基本数据,Wrapper

调用包装类的paseXX()方法

String str = "123"; Integer integerStr = Integer.parseInt(str);

习题:

如下两个题目输出结果相同吗?各是什么:

1:

Object o1 = true ? new Integer(1) : new Double(2.0);

System.out.println(o1);//

2:

public voidtest() {

Object o2;if (true)

o2= new Integer(1);elseo2= new Double(2.0);

System.out.println(o2);// }

3:

public voidmethod1() {

Integer i= new Integer(1);

Integer j= new Integer(1);

System.out.println(i == j);

Integer m = 1;

Integer n= 1;

System.out.println(m == n);

Integer x = 128;

Integer y= 128;

System.out.println(x == y);

}

解答:

习题1: 答案是:1.0 因为 //因为在编译的时候int 和dubbo会自动对类型提升为dubbo的 所以结果是1.0

习题2: 答案:1 因为没有进行对比只是赋值

习题3: a: //false == 比引用地址 是否同一个对象 不是的

b://true

c://false 因为Internet会把使用频繁的数字存到自己的地址值中 方便我们来调用避免重复调用,-128 ---- 127 这个范围内的 都是调用integer中的保存的都是同一个地址值 超过这个范围就不是同一个自地址值就是新建的了

3:知识点:

Integer内部定义了IntegerCache的结构 IntegerCache中定义了Integer[],

保存了从-128 ---127范围的整数,如果我们使用自动装箱的方式给Inte赋值的范围在-128 -- 127 的范围内时候就可以直接使用数组中的元素 不用去new了

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值