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
    }
}
相关推荐
朝朝辞暮i10 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
leikooo10 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
小师兄吃牛肉10 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记11 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
言乐611 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_3077791311 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
Ivanqhz11 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
kakakahahahaha12 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i12 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
沙漠之主12 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++