【Java常用类之integer包装类 22】

一、八种基本类型对应的包装类型

基本数据类型         包装类型(引用数据类型)

byte           java.lang.Byte;

short            java.lang.Short;

int             java.lang.Integer;

long           java.lang.Long;

float           java.lang.Float;

double          java.lang.Double;

booblean         java.lang.Booblean;

char           java.lang.Character;

引入包装类的作用:方便编程

自动装箱可以简单理解为:基本数据类型转换为引用数据类型

自动拆箱可以简单理解为:引用数据类型转换为基本数据类型

二、详细介绍integer类型

1、Integer类在对象中包装了一个基本类型int的值,integer类在对象中包含了一个int类型的字段

static int MAX_VALUE  : 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。
static int MIN_VALUE:值为 -2^31 的常量,它表示 int 类型能够表示的最小值。

……

2、提供了多个方法,能在int和string类型之间相互转换,还提供了处理int类型时非常有用的其他一些常量和方法

复制代码
package com.JavaStudy.wrapperInteger0623;

/**
 * @Author wufq
 * @Date 2020/6/23 16:58
 */
public class IntegerTest01 {
    public static void main(String[] args){
        //关于常量
        System.out.println("int的最大值:"+Integer.MAX_VALUE);// 2147483647
        System.out.println("int的最小值:"+Integer.MIN_VALUE);// -2147483648

        //构造integer类型对象
        //将int -->integer类型   包装过程(装箱)
        Integer i1 = new Integer(10);
        //integer --> int 拆箱
        int i2 = i1.intValue();
        System.out.println("i2:"+i2);

        //Integer(String s)构造方法:表示String参数所指示的int值,并且重写了toString方法
        Integer i3 = new Integer("123");
        System.out.println("i3:"+i3.toString());

        //此例可以看出构造方法String参数表示的只能是int值,如果是字符串就会报NumberFormatException异常
        Integer i4 = new Integer("中国");
        System.out.println("i4:"+i4.toString());

        //Integer类重写了equals方法(equals是Object类的方法,比较的是内存地址),重写以后比较的是值
        Integer i5 = new Integer(10);
        Integer i6 = new Integer(10);

        System.out.println(i5==i6);//false
        System.out.println(i5.equals(i6));//true
        
    }
}
复制代码

3、JDK5.0特性(JDK1.5之后,包含1.5在内,可以进行自动装箱和拆箱)

自动装箱:auto.boxing

自动拆箱:auto_unboxing

注意:自动装箱和自动拆箱属于编译期间功能,这种功能会方便程序编写,但是程序真正运行依然用的是new Integer();

复制代码
package com.JavaStudy.wrapperInteger0623;

/**
 * @Author wufq
 * @Date 2020/6/23 17:26
 */
public class IntegerTest02 {
    public static void main(String[] args){
        //JDK1.5版本之前的装箱和拆箱
        Integer i1 = new Integer(10);
        int i2 = i1.intValue();

        //JDK1.5版本之后的装箱和拆箱
        Integer i3 = 10;
        int i4 = i3;

        //自动装箱、拆箱程序真正运行仍然是new
        Integer i5 = 300;
        Integer i6 = 300;
        System.out.println(i5 == i6);//false  -->底层仍然是:Integer i5 = new Integer(300);
        System.out.println(i5.equals(i6));//true

        Integer i7 = 100;
        Integer i8 = 100;
        System.out.println(i7==i8);//true
        
    }
}
复制代码

对比i5 == i6和i7==i8结果发现前者是false,后者是true    为什么会有这样不同的结果?

原因:integer的缓存问题:integer默认的缓存区间是-128~127,但是可以手动设置缓存区间(设置vm arguments参数 -XX:AutoBoxCacheMax=2008)

4、int、String、integer三者之间相互转换

 

复制代码
package com.JavaStudy.wrapperInteger0623;

/**
 * @Author wufq
 * @Date 2020/6/24 09:55
 */
public class IntegerTest03 {
    public static void main(String[] args){
        //Integer ---> String
        Integer i1 = 10;
        String s1 = i1.toString();
        System.out.println(s1);
        //String ---> Integer
        Integer i2 = Integer.valueOf("123");
        System.out.println(i2);

        //int ---> String
        int i3 = 10;
        String s2 = i3+"";
        //String ---> int
        int i4 = Integer.parseInt("11");
        System.out.println(i4);

        //int --->Integer
        Integer i5 = Integer.valueOf(10);
        //Integer ---> int
        int i6 = i5.intValue();
        System.out.println(i6);
    }
}
复制代码

 

posted @   尘封~~  阅读(311)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示