Java中常用类——包装类

针对8中基本数据类型相应的引用类型——包装类,有了类的特点,就可以调用类中的方法是

基本数据类型包装类
booleanBoolean
charCharacter
byteByte
shortShort
intInterger
longLong
float

Float

doubleDouble
  • 案例展示

int与Interger之间的转换,jdk5之前采用手动装箱与拆箱,其中装箱:基本数据类型——>包装类型,相反的则为拆箱。而jdk5之后采用自动装箱与拆箱的方法。自动装箱底层掉哦用的valueof()方法,比如Interger.valueOf()。

package Learn;
public class Test{
    public static void main(String[] args) {
        //手动装箱
        int i=1000;
        //Integer integer=new Integer(i);
        //或者
        Integer integer1=Integer.valueOf(i);


        //手动拆箱
        int g=integer1.intValue();

        /*jdk5之后,就可以自动装箱和自动拆箱了,从本质上来说,其底层还是调用的valueOf()方法
        这是jdk5之后的源码,仍旧可以方法返回了一个valueOf方法
         *@IntrinsicCandidate
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
         *
         * */

        Integer integer2=i;

        //自动拆箱
        int n1=integer2;
    }

}
  • 练习

结果为1.0,其中三元运算符为一个整体,所以最终要进行类型提升,最终的输出类型为double类型。

package Learn;
public class Test{
    public static void main(String[] args) {
        Object obj=false;
        System.out.println(obj.equals(false)?new Integer(1):new Double(1.2));
    }
}

  •  包装类型与String类型的转换
package Learn;
public class Test{
    public static void main(String[] args) {
        //自动装箱
        Integer i=1;
        //第一种转换方式
        String n1=i+"";
        //第二种转换方法
        String n2=i.toString();
        //第三种方法,使用valueof方法,由于此方法需要传入一个对象,而我们包装之后便是存在一个对象
        String n3=String.valueOf(i);

        String n4="12345";
        //String类型转换成int类型
        //第一种public static int parseInt(String s) throws NumberFormatException {
        //        return parseInt(s,10);
        //    }
        Integer n5=Integer.parseInt(n4);
        //第二种,利用Integer自带的构造器
        Integer n6=new Integer(n4);
    }
}
  • 常用的方法
package Learn;
public class Test{
    public static void main(String[] args) {
      Integer n1=100;
      Integer n2=1000;
      System.out.println(Integer.MAX_VALUE);
      //输出Integer范围的最大值与最小值
      System.out.println(Integer.MIN_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.toUpperCase('a'));
      System.out.println(Character.toLowerCase('a'));
    }
}
  • 练习
package Learn;
public class Test{
    public static void main(String[] args) {
      Integer n1=new Integer(100);
      Integer n2=new Integer(100);
      //在这里将其封装new一个对象,但是n1与n2对象不相等,但是值相等,===比较的是对象,equal比较值
      System.out.println(n1==n2);
      System.out.println(n1.equals(n2));
      /*在这里我们知道自动转换类型使用了valueof方法,在这里当我们传输的i对象在范围(-128-127)之间时,
      我们返回的是数字,但是当不满足源码中的条件时,则返回一个new对象,这也就解释了下面两组数据同样的赋值方法,结果不同的原因
      * public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }*/
      Integer integer = 100;
      Integer integer1 = 100;
      System.out.println(integer==integer1);
      System.out.println(integer.equals(integer1));

      Integer integer3= 1000;
      Integer integer4 = 1000;
      System.out.println(integer3==integer4);
      System.out.println(integer3.equals(integer4));

    }
}

但是注意只要存在基本数据类型,==就是判断的值是否相等,就不要去管对象的事情了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值