java学习之包装类

目录

 一、包装类的基本信息

 二、结构图

 三、包装类和基本数据的转换

 基本说明

练习

 四、包装类型和 String 类型的相互转换

 五、Integer 类和 Character 类的常用方法

 六、练习


 一、包装类的基本信息

 二、结构图

 

 

 三、包装类和基本数据的转换

 基本说明

package com.hspedu.wrapper;

/**
 * @author GQQ
 * @version 1.0
 */
public class Integer01 {
    public static void main(String[] args) {
        //int <-> Integer 装箱和拆箱
        //jdk5以前是手动装箱和拆箱
        //手动装箱
        int n1 = 10;
        Integer integer = new Integer(n1);
        Integer integer1 = Integer.valueOf(n1);

        //手动拆箱
        int i = integer.intValue();

        //jdk5以后是自动装箱和拆箱
        int n2 = 20;
        Integer integer2 = n2;//自动装箱:底层使用的是 Integer.valueOf(n2)
        int n3 = integer2;//拆箱: 底层调用的是integer2.intValue();
        //其他包装类的装箱和拆箱用法类似

    }
}

练习

 

package com.hspedu.wrapper;

/**
 * @author GQQ
 * @version 1.0
 */
public class WrapperExercise01 {
    public static void main(String[] args) {
        Double d = 100d;//自动装箱 Double valueOf(double d)
        Float f = 1.5f;//自动装箱 Float valueOf(float f)

        double d1 = d;//自动拆箱 doubleValue()
        float f1 = f;//floatValue()
        //考察知识点:三元运算符是一个整体,因为表达式2的数据类型是Double,所以输出的obj1 = 1.0s
        Object obj1 = true?new Integer(1):new Double(2.0);
        System.out.println(obj1);
        Object obj2;
        if(true) {
            obj2 = new Integer(1);
        } else {
            obj2 = new Double(2.0);
        }
        System.out.println(obj2);
        System.out.println(obj1 == obj2);
    }
}

 

 四、包装类型和 String 类型的相互转换

package com.hspedu.wrapper;

/**
 * @author GQQ
 * @version 1.0
 */
public class WrapperVsString {
    public static void main(String[] args) {
        //包装类(Integer)-> String
        Integer i = 100;//自动装箱

        //方式1
        //1.i本身并没有变化
        //2.以i为基本数据转成的String对象
        String str1 = i + "";

        //方式2
        String str2 = i.toString();

        //方式3
        String str3 = String.valueOf(i);

        //String -> 包装类(Integer)
        String str4 = "1234";
        Integer i2 = Integer.parseInt(str4);//先转成int型数据,然后自动装箱
        Integer i3 = new Integer(str4);//通过构造器直接传进去

        System.out.println("ok");
    }
}

 五、Integer 类和 Character 类的常用方法

package com.hspedu.wrapper;

/**
 * @author GQQ
 * @version 1.0
 */
public class WrapperMethod {
    public static void main(String[] args) {
        System.out.println(Integer.MIN_VALUE); //返回最小值
        System.out.println(Integer.MAX_VALUE);//返回最大值

        System.out.println(Character.isDigit('a'));//判断是不是数字
        System.out.println(Character.isLetter('a'));//判断是不是字母
        System.out.println(Character.isUpperCase('a'));//判断是不是大写
        System.out.println(Character.isLowerCase('a'));//判断是不是小写
        System.out.println(Character.isWhitespace('a'));//判断是不是空格
        System.out.println(Character.toUpperCase('a'));//转成大写
        System.out.println(Character.toLowerCase('A'));//转成小写
    }
}

 

 六、练习

package com.hspedu.wrapper;

/**
 * @author GQQ
 * @version 1.0
 */
public class WrapperExercise02 {
    public static void main(String[] args) {

        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i==j);//引用数据类型,判断是两个Integer类对象的地址的值是否相等,false

        /*
        public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
        }
        代码解读:
        jvm在运行时创建了一个缓存区域,并创建IntegerCache.cache[],
        所以如果传入的i的范围是在-128~127之间,就直接从该数组中获取Integer对象
        否则new Integer(i)
         */
        //自动装箱 底层调用的是 Integer valueOf(int i),
        Integer m =1;//1在-128~127之间
        Integer n = 1;
        System.out.println(m==n);//内存地址相同,结果为T

        Integer x = 128;//128不在在-128~127之间,需要new Integer(128)
        Integer y = 128;
        System.out.println(x==y);//比较的是对象的地址的值是否相等,false

    }
}

 

 

 

package com.hspedu.wrapper;

/**
 * @author GQQ
 * @version 1.0
 */
public class WrapperExercise03 {
    public static void main(String[] args) {
        //示例一
        Integer i1 = new Integer(127);
        Integer i2 = new Integer(127);
        System.out.println(i1 == i2);//比较的是引用数据,F
        //示例二
        Integer i3 = new Integer(128);
        Integer i4 = new Integer(128);
        System.out.println(i3 == i4);//同上,F
        //示例三
        Integer i5 = 127;//底层 Integer.valueOf(127)
        Integer i6 = 127;//-128~127
        System.out.println(i5 == i6); //从缓存数组中获取的对象,没有创建新的Integer对象,T
        //示例四
        Integer i7 = 128;
        Integer i8 = 128;
        System.out.println(i7 == i8);//超出了-128-127的范围,创建对象,F
        //示例五
        Integer i9 = 127; //Integer.valueOf(127),从缓存的数组中获取的Integer对象
        Integer i10 = new Integer(127);
        System.out.println(i9 == i10);//两者指向的内存地址不同,F
        //示例六
        //只要有基本数据类型, 判断的就是值是否相同
        //i11会自动拆箱,转换成int型数据
        Integer i11=127;//从缓存数组中获取127
        int i12=127;

        System.out.println(i11==i12); //T
        //示例七
        Integer i13=128;
        int i14=128;
        System.out.println(i13==i14);//T
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值