Java包装类

包装类

  1. 针对八种基本数据而理性相应的引用类型---包装类
  2. 有了类的特点,就可以调用类中的方法
基本数据类型 包装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double



包装类和基本数据类型的转换

基本数据类型和包装类的相互转换

  1. jdk5前的手动装箱和拆箱方式,装箱:基本类型--->包装类型,反之,拆箱
  2. jdk5(包含jdk5)以后的自动装箱和拆箱方式
  3. 自动装箱底层调用的是valueOf方法,比如Integer.valueOf()
java 复制代码
package com.shedu.wrapper_;


public class Integer01 {
    public static void main(String[] args) {
        //演示int《--》Integer的装箱和拆箱
        //jdk5前是手动装箱和拆箱
        //手动装箱
        int n1 = 100;
        Integer integer = new Integer(n1);
        Integer integer1 = Integer.valueOf(n1);

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


        //jdk5后,就可以自动装箱和自动拆箱
        int n2 = 200;
        //自动装箱 int---->Integer
        Integer integer2 = n2;//底层使用的是:integer.valueOf(n2)

        //自动拆箱Integer------>int
        int n3= integer2;//底层使用的仍然是intValue()方法
    }
}

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

java 复制代码
package com.shedu.wrapper_;


public class WrapperVSString {
    public static void main(String[] args) {
        //包装类(Integer)-->String
        Integer i = 100;//自动装箱
        //方式1
        String s1 = i+"";
        //方式2
        String s2 = i.toString();
        //方式3
        String s3 = String.valueOf(i);



        //String --> 包装类(Integer)
        String s4 = "123";
        Integer i1 = Integer.parseInt(s4); // 使用到自动装箱
        Integer i2 = new Integer(s4);

    }
}

包装类的常用方法

练习

java 复制代码
package com.shedu.wrapper_;
public class WrapperExercise02 {
    public static void main(String[] args) {
        methods();
    }

    public static void methods() {
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j);//false


        /*
        源码:
        1. 如果i在IntegerCache.low(-128)~IntegerCache.high(127)范围内,之际从数组中返回
        2.如果不在这个范围内,就直接new Integer()
        public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
         */
        //当范围在-126 ------127之间时,直接返回值
        Integer m = 1;//底层调用Integer.valueOf();
        Integer n = 1;//底层调用Integer.valueOf();
        System.out.println(m == n); //true


        //当范围在-126 ------127之间时,直接返回值
        //否则,就new Integer();
        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y);//false
        //当有基本数据类型进行比较,比较的就是数值
        int n11 = 128;
        System.out.println(n11 == x);//true
    }
}
相关推荐
二哈赛车手7 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
为何创造硅基生物8 小时前
C语言 结构体内存对齐规则(通俗易懂版)
c语言·开发语言
吃好睡好便好8 小时前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
栗子~~8 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
星寂樱易李8 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
YDS8298 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
仰泳之鹅8 小时前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
之歆9 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
未若君雅裁9 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
cen__y10 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git