黑马Java零基础视频教程精华部分_13_包装类

系列文章目录

《黑马Java零基础视频教程精华部分》系列文章目录

黑马Java零基础视频教程精华部分_1_JDK、JRE、字面量、JAVA运算符
黑马Java零基础视频教程精华部分_2_顺序结构、分支结构、循环结构
黑马Java零基础视频教程精华部分_3_无限循环、跳转控制语句、数组、方法
黑马Java零基础视频教程精华部分_4_对象、封装、this关键字、构造方法、对象内存图、成员变量、局部变量、标准JavaBean
黑马Java零基础视频教程精华部分_5_面向对象综合练习
黑马Java零基础视频教程精华部分_6_字符串
黑马Java零基础视频教程精华部分_7_ArrayList集合
黑马Java零基础视频教程精华部分_8_学生管理系统
黑马Java零基础视频教程精华部分_9_面向对象进阶(1)_static、继承
黑马Java零基础视频教程精华部分_10_面向对象进阶(2)_多态、包、final、权限修饰符、代码块
黑马Java零基础视频教程精华部分_11_面向对象进阶(3)_抽象类、接口、适配器
黑马Java零基础视频教程精华部分_12_面向对象进阶(4)_内部类



一、如何理解包装类

1、包装类:用一个对象,把基本数据类型给包起来

在这里插入图片描述

2、为什么要学习包装类?

  1. Java是一种面向对象的编程语言,‌它要求数据都应该是对象,‌而不是基本类型。‌这意味着,‌为了实现面向对象的思想,‌我们需要将基本数据类型封装成对象,‌这就是包装类的用途。‌通过使用包装类,‌我们可以将基本数据类型如int、‌double等转换为对应的对象类型,‌从而获得面向对象的特性,‌如方法和属性。‌这有助于我们在Java中使用泛型、‌集合(Java集合不能存放基本数据类型,只能存放对象的引用)等面向对象的技术。‌
  2. 包装类提供了与基本数据类型相关的属性和方法,‌如最大值、‌最小值等。‌这些属性和方法使得包装类在处理数据时更加灵活和方便。‌例如,‌包装类支持自动拆箱和装箱操作,‌可以将基本数据类型的数据转换为引用类型数据,‌反之亦然。‌这种特性使得包装类在处理数据转换时非常有用。‌
  3. 包装类的使用还涉及到null值的处理。‌在Java中,‌基本数据类型的默认值是具体的数值(‌如int的默认值是0)‌,‌而包装类的默认值是null。‌这在处理前端传递的数据时尤为重要,‌因为前端可能会传递空数据。‌使用包装类可以避免因传递空数据而导致的程序错误

3、包装类对应关系

在这里插入图片描述
我们需要着重记住char和int的包装类,首先命名上比较不同,其次之后使用比较多。

二、包装类使用

1、如何创建Integer对象

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

		//1.利用构造方法获取Integer的对象(JDK5以前的方式)
        Integer i1 = new Integer(1);
        Integer i2 = new Integer("1");
        System.out.println(i1);
        System.out.println(i2);

        //2.利用静态方法获取Integer的对象(JDK5以前的方式)
        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出来,地址值不一样。所以下面的输出都是false
        Integer i10 = new Integer(127);
        Integer i11 = new Integer(127);
        System.out.println(i10 == i11);

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

2、包装类如何计算

在以前包装类如何进行计算

        Integer i1 = new Integer(1);
        Integer i2 = new Integer(2);

        //需求:要把两个数据进行相加得到结果3
        //对象之间是不能直接进行计算的。
        //步骤:
        //1.把对象进行拆箱,变成基本数据类型
        //2.相加
        //3.把得到的结果再次进行装箱(再变回包装类)

        int result = i1.intValue() + i2.intValue();
        Integer i3 = new Integer(result);
        System.out.println(i3);

在JDK5的时候提出了一个机制:自动装箱和自动拆箱

        //自动装箱:把基本数据类型会自动的变成其对应的包装类
        //自动拆箱:把包装类自动的变成其对象的基本数据类型

        //在底层,此时还会去自动调用静态方法valueof得到一个Integer对象,只不过这个动作不需要我们自己去操作了
        //自动装箱的动作
        Integer i1 = 10;
        Integer i2 = new Integer(10);
        //自动拆箱的动作
        int i = i2;
        //结论:在JDK5以后,int和Integer可以看做是同一个东西,因为在内部可以自动转化。

不需要new,不需要调用方法,直接赋值即可

Integer i = 10;
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = i4 + i2,

3、Integer成员方法

以下方法都是静态的,所以直接使用类名加点即可调用。

public static string tobinarystring(int i) 得到二进制
public static string tooctalstring(int i) 得到八进制
public static string toHexstring(int i) 得到十六进制
public static int parseInt(string s) 将字符串类型的整数转成int类型的整数
//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 i = Integer.parseInt("123");
System.out.println(i);
System.out.println(i + 1);//124
//细节1:
//在类型转换的时候,括号中的参数只能是数字不能是其他,否则代码会报错
//细节2:
//8种包装类当中,除了Character都有对应的parseXxx的方法,进行类型转换
String str = "true";
boolean b = Boolean.parseBoolean(str);
System.out.println(b);//true
  • 29
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值