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
    }
}
相关推荐
sin22013 分钟前
idea创建springBoot的五种方式
java·spring boot·intellij-idea
皓木.10 分钟前
苍穹外卖——准备工作
java·数据库·mybatis
愤怒的代码23 分钟前
Spring Boot对访问密钥加密解密——RSA
java·spring boot·后端
美美的海顿24 分钟前
springboot基于Java的校园导航微信小程序的设计与实现
java·数据库·spring boot·后端·spring·微信小程序·毕业设计
愤怒的代码26 分钟前
Spring Boot中幂等性的应用
java·spring boot·后端
silver68727 分钟前
JAVA8 Stream API 使用详解
java
武子康30 分钟前
大数据-259 离线数仓 - Griffin架构 修改配置 pom.xml sparkProperties 编译启动
xml·java·大数据·hive·hadoop·架构
IT 古月方源40 分钟前
ensp 关于ARRP 的讲解 配置
运维·开发语言·网络·tcp/ip·智能路由器
西猫雷婶1 小时前
python学opencv|读取图像(二十二)使用cv2.polylines()绘制多边形
开发语言·python·opencv
温轻舟1 小时前
前端开发 -- 自定义鼠标指针样式
开发语言·前端·javascript·css·html·温轻舟