java基础--包装类

1、包装类

基本数据类型的引用类型(对象)

区别:
在这里插入图片描述
对应关系:
在这里插入图片描述

2、为什么需要包装类

方便使用,比如集合不能存储基本数据类型。

3、JDK5以前的方式

		public Integer(int value)                                       根据传递的整数创建一个Integer对象
		public Integer(string s)                                        恨据传递的字符串创建一个Integer对象
		public static Integer valueof(int i)                            根据传递的整数创建一个Integer对象
		public static Integer value0f(string s)                         根据传递的字符串创建一个Integer对象
		public static Integer valueof(string s, int radix)              根据传递的字符串和进制创建一个Integer对象

		1、利用构造方法获取Integer对象。
        Integer i1 = new Integer(1);
        Integer i2 = new Integer("1");
        System.out.println(i1);
        System.out.println(i2);

        2、利用静态方法获取Integer对象。
        Integer i3 = Integer.valueOf(123);
        Integer i4 = Integer.valueOf("123");
        Integer i5 = Integer.valueOf("123",8);
        System.out.println(i3);
        System.out.println(i4);
        System.out.println(i5);
        
		3.这两种方式获取对象的区别(掌握)
        底层原理:
        因为在实际开发中,-128~127之间的数据,用的比较多
        如果每次使用都是new对象,那么太浪费内存了
        所以,提前把这个范围之内的每一个数据都创建好对象
        如果要用到了不会创建新的,而是返回已经创建好的对象。
        Integer i6 = Integer.valueOf(127);
        Integer i7 = Integer.valueOf(127);
        System.out.println(i6 == i7);//true

        Integer i8 = Integer.valueOf(128);
        Integer i9 = Integer.valueOf(128);
        System.out.println(i8 == i9);//false

        因为看到了new关键字,在Java中,每一次new都是创建了一个新的对象
        所以下面的两个对象都是new出来,地址值不一样。
        Integer i10 = new Integer(127);
        Integer i11 = new Integer(127);
        System.out.println(i10 == i11);//false

        Integer i12 = new Integer(128);
        Integer i13 = new Integer(128);
        System.out.println(i12 == i13);//false

		在以前包装类如何进行计算
        Integer i14 = new Integer(1);
        Integer i15=new Integer(2);
        需求:要把两个数据进行相加得到结果3
        对象之间是不能直接进行计算的。
        步骤:
        1.把对象进行拆箱,变成基本数据类型
        2.相加
        3.把得到的结果再次进行装箱(再变回包装类)
        int result = i1.intValue()+ i2.intValue();
        Integer i16 =new Integer(result);
        System.out.println(i16);

4、JDK5出来的机制

JDK5的时候提出了一个机制:自动装箱和自动拆箱
        自动装箱:把基本数据类型会自动的变成其对应的包装类
        自动拆箱:把包装类自动的变成其对象的基本数据类型
        在底层,此时还会去自动调用静态方法valueof得到一个Integer对象,只不过这个动作不需要我们自己去操作了
        
        自动装箱的动作
        Integer i17=10;
        
        Integer i18 = new Integer( value: 10);
        自动拆箱的动作
        int i = i18;JDK5以后,intInteger可以看做是同一个东西,因为在内部可以自动转化。

5、Integeter方法

		1.把整数转成二进制
        String str1=Integer.toBinaryString(100);
        System.out.println(str1);//1100100
        2.把整数转成八进制
        String str2 = Integer.toOctalString(100);
        System.out.println(str2);//144
        3.把整数转成十六进制
        String str3 =Integer.toHexString(100);
        System.out.println(str3);//64
        4.将字符串类型的整数转成int类型的整数
        强类型语言:每种数据在java中都有各自的数据类型
        在计算的时候,如果不是同一种数据类型,是无法直接计算的。
        int ii= Integer.parseInt("123");
        System.out.println(ii);
        System.out.println(ii +1);//124

6、键盘录入

		键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = sc.next();
        System.out.println(str);
        弊端:
        当我们在使用next,nextInt,nextDouble在接收数据的时候,遇到空格,回车,制表符的时候就停止了
        键盘录入的是123123 那么此时只能接收到空格前面的数据
        我想要的是接收一整行数据
        约定:
        以后我们如果想要键盘录入,不管什么类型,统一使用nextLine
        特点遇到回车才停止
        String line = sc.nextLine();
        System.out.println(line);
        double v = Double.parseDouble(line);
        System.out.println(v);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值