Integer的用法

一、进制转换

1、十进制数转换为其他进制数

public static String toBinaryString(int i) // 转为二进制数
public static String toOctalString(int i)  // 转为八进制数
public static String toHexString(int i)    // 转为十六进制数
System.out.println(Integer.toBinaryString(2)); // 10 十进制数2转换为二进制
System.out.println(Integer.toOctalString(8));  // 10 十进制数8转换为八进制
System.out.println(Integer.toHexString(16));   // 10 十进制数16转换为十六进制

2、其他进制数转换为十进制数

// 将字符串参数解析为有符号十进制整数
public static int parseInt(String s) throws NumberFormatException
public static int parseInt(String s, int radix) throws NumberFormatException // 解析基数

// 将字符串参数解析为无符号十进制整数
public static int parseUnsignedInt(String s) throws NumberFormatException 
public static int parseUnsignedInt(String s, int radix) throws NumberFormatException 
System.out.println(Integer.parseInt("10",2));  // 二进制数10转为十进制,结果为2
System.out.println(Integer.parseInt("10",8));  // 八进制数10转为十进制,结果为8
System.out.println(Integer.parseInt("10",16)); // 十六进制数10转为十进制,结果为16

二、缓存机制

对于小的整数值(通常是-128到127之间,这个范围取决于JVM实现),Java会缓存这些Integer对象

因此在这个范围内的整数运算不会创建新的对象,超出这个范围的整数运算则会创建新的Integer对象

这个缓存机制只适用于Integer类型,对于其他的包装类(如Long、Double等),没有类似的缓存机制

程序更关心对象的实体,使用equals方法或者拆箱后的比较将始终基于值而不是引用,结果将是预期的

  • 通过Integer.valueOf(int i)方法实现,在这个范围内的值会返回缓存中的对象
		Integer i1 = 20 + 1;
        Integer i2 = 20 + 1;
        System.out.println(i1 == i2); // true
        Integer i3 = 200;
        Integer i4 = 200;
        System.out.println(i3 == i4);      // false
		System.out.println(i3.equals(i4)); // true

        Double d1 = 20.0;
        Double d2 = 20.0;
        System.out.println(d1 == d2); // false

注意事项:对于Long类型,并没有像Integer那样明确规定的缓存范围

对于小的整数值,由于自动装箱和拆箱的行为,可能会观察到类似于Integer缓存的行为

尽管这不是Long规范的一部分,观察到的行为可能因JVM实现和版本的不同而有所差异

  • 自动装箱会调用Long.valueOf(long l)方法,方法内部可能会实现一个小的缓存
        Long l1 = 20L + 1;
        Long l2 = 20L + 1;
        System.out.println(l1 == l2); // true

        Long l3 = 200L;
        Long l4 = 200L;
        System.out.println(l3 == l4);      // false
        System.out.println(l3.equals(l4)); // true

在这里插入图片描述

  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼悠奕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值