Java String、Integet类型“==”什么时候为true

一、String类型的“==”
先上代码:
在这里插入图片描述

运行结果:
在这里插入图片描述
分析:
1、==本身代表引用地址的比较,当“+”都是常量连接时,先去String常量池去找,若有,直接返回常量池该值;
2、若“+”有变量,则会在开辟新的内存空间,本质使用new了一个StringBuilder,然后用append方法连接,所以它的地址肯定跟原来的不一样,具体可参考博客Java中的字符串连接符(+)
3、若是基本类型的 “==”,都是比较值的,因为它们在栈里存在的都是真实的值,不需要地址引用到堆。

二、Integer类型的"==":
在这里插入图片描述
运行结果:
在这里插入图片描述

分析:
1、在Integer类的内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率!

延伸:自动装箱是指,在Java5发布之前使用包装类对象进行运算时,需要较为繁琐的“拆箱”和“装箱”操作;***即运算前先将包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。***从Java5开始增加了自动拆箱和自动装箱的功能。

三、Character、Short、Long类型
查看它们各自valueOf方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也同样用到的自动装箱池!如果Character少于128,Short和Long类型在-128~127则自动调用装箱池的值,不需要重新new对象!

好的,以下是我写的一个ArrayLists类,实现了你所述的各种方法: ```java public class ArrayLists { private Object[] arr; private int size; public ArrayLists() { arr = new Object[8]; size = 0; } public void add(Object o) { if (size == arr.length) { int newLength = size * 2 + 1; Object[] newArr = new Object[newLength]; System.arraycopy(arr, 0, newArr, 0, size); arr = newArr; } arr[size] = o; size++; } public Object get(int i) { if (i < 0 || i >= size) { System.out.println("数组下标越界"); return null; } return arr[i]; } public int length() { return size; } public Object del(int i) { if (i < 0 || i >= size) { System.out.println("数组下标越界"); return null; } Object result = arr[i]; for (int j = i; j < size - 1; j++) { arr[j] = arr[j + 1]; } size--; return result; } public void update(int i, Object o) { if (i < 0 || i > size) { System.out.println("数组下标越界"); return; } if (i == size) { add(o); return; } for (int j = size - 1; j >= i; j--) { arr[j + 1] = arr[j]; } arr[i] = o; size++; } } ``` 这个类使用了一个Object类型的数组arr来保存元素,以及一个整数变量size来表示当前存储到该对象中的元素个数。在构造函数中,我们初始化了数组arr,使其可以保存8个元素。 add方法用于在最后插入一个Object对象,并在需要时自动扩容。如果当前存储的元素个数等于数组的长度,我们就将数组扩容为当前存储的个数 * 2 + 1。 get方法用于根据下标返回数组中对应的对象。如果下标为负数或超出当前存储的个数,我们输出"数组下标越界"。 length方法用于返回当前存储到该对象中的元素个数,注意不是数组的长度。 del方法用于根据下标删除数组中的内容,并将数组后面的内容依次向前移动。如果下标为负数或大于等于当前存储的元素个数,我们输出"数组下标越界"。 update方法用于在指定下标位置上插入对象,原位置及后续内容统一向后移动一位。如果下标为负数或大于当前存储的元素个数,我们输出"数组下标越界"。 最后,我们创建了一个ArrayLists对象,存入了9个其他类型的对象,并依次调用各个方法进行测试。你可以根据需要修改对象中存储的元素个数,以及需要插入、删除、修改的元素位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值