对包装类进行直接赋值时,若值在缓存区内,则会指向执行缓存区的地址。(通过new赋值则不会)
缓存范围:
1、Boolean,全部缓存。
2、Character、Byte、Short、Integer、Long,缓存范围:-128 ~ 127
3、Float、Double,无缓存。
例子1:
直接赋值缓存内的值。
public static void main(String[] args) { //直接从缓存区内拿,地址一致 Integer integer1 = 127; Integer integer2 = 127; System.out.println(integer1==integer2); }
输出:
例子2:
直接赋值缓存外的值。
public static void main(String[] args) { //缓存区拿不到,只能自己new一个对象,所以地址不一致 Integer integer1 = 128; Integer integer2 = 128; System.out.println(integer1==integer2); }
输出:
标签:integer2,缓存,Java,包装,integer1,127,Integer,赋值 From: https://www.cnblogs.com/lurenjia-bky/p/17199186.html