系列文章目录
《黑马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)_内部类
文章目录
- 系列文章目录
- 《黑马Java零基础视频教程精华部分》系列文章目录
- 一、如何理解包装类
- 1、包装类:用一个对象,把基本数据类型给包起来
- 2、为什么要学习包装类?
- 3、包装类对应关系
- 二、包装类使用
- 1、如何创建Integer对象
- 2、包装类如何计算
- 3、Integer成员方法
一、如何理解包装类
1、包装类:用一个对象,把基本数据类型给包起来
2、为什么要学习包装类?
- Java是一种面向对象的编程语言,它要求数据都应该是对象,而不是基本类型。这意味着,为了实现面向对象的思想,我们需要将基本数据类型封装成对象,这就是包装类的用途。通过使用包装类,我们可以将基本数据类型如int、double等转换为对应的对象类型,从而获得面向对象的特性,如方法和属性。这有助于我们在Java中使用泛型、集合(Java集合不能存放基本数据类型,只能存放对象的引用)等面向对象的技术。
- 包装类提供了与基本数据类型相关的属性和方法,如最大值、最小值等。这些属性和方法使得包装类在处理数据时更加灵活和方便。例如,包装类支持自动拆箱和装箱操作,可以将基本数据类型的数据转换为引用类型数据,反之亦然。这种特性使得包装类在处理数据转换时非常有用。
- 包装类的使用还涉及到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