加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java Wrapper包装类

发布时间:2020-12-15 07:27:10 所属栏目:Java 来源:网络整理
导读:? 什么是包装类?为什么需要包装类? 这是大家要了解的 对于java中的基本数据类型我们如果想要把当当做类来使用怎么办呢? 如果想要对这些基本数据类型直接调用一些方法来操作的话 怎么做呢? 由以上就产生了Wrapper包装类(这在python中叫装饰器) 包装类作用: ja

?

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

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

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

包装类作用:

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

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

?

?

?

?

基本数据---->Wrapper

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

?

    //  基本数据转化为Wrapper  :  直接调用包装类的构造器即可
    public void testOne() {
        int num1 = 10;
        Integer integer = new Integer(num1);
        System.out.println("基本数据转化为包装类的结果:" + integer);
        
        Float f = new Float(3.5);
        System.out.println(f);
    }

?

Wrapper ---> 基本数据

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

  //Wrapper 转化为 基本数据 : 直接调用XXValue() 方法
    public void WrapperToBasic() {
        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 void basicWrapperToString() {
        //方法一直接转化
        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 转化为基本数据类型和包装类 需要调用包装类的paseXX()方法

    //String ---> 基本数据,Wrapper : 调用包装类的paseXX
    public void StringToBsicsWrapper() {
        String str = "123";   //必须是转化的对应类型的字符,转为int那么久必须是字符串类型的int
        Integer integerStr = Integer.parseInt(str);
        System.out.println(integerStr);
    }

?

?

错误的

   public void StringToBsicsWrapper() {
        String str = "老王";
        Integer integerStr = Integer.parseInt(str);  //这样是错误的  因为你要转化为int那么String就要是字符串类型的int   "123"
        System.out.println(integerStr);
    }

?

装箱子:

    //装箱子:  转化为String
    //需要先把对应的信息转化为包装类 有了类的特征就可以调用类的方法了
    public void pack(){
        int num = 30;
        Integer integer = new Integer(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 void test() {
        Object o2;
        if (true)
            o2 = new Integer(1);
        else
            o2 = new Double(2.0);
        System.out.println(o2);//
    }

?

?

3:

 public void method1() {
        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了

?

?

?

?

?

?

?

.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读