如何在Java中避免创建不必要的对象(备战2024春招或暑期实习,每天进步一点点)

// 正确写法

String name1 = “李子捌”;

除此之外,刚写Java代码的程序员们,也要正确的选择String、StringBuilder、StringBuffer类的使用。String为不可变对象,通常用于定义不变字符串;StringBuilder、StringBuffer用于可变字符串操作场景,如字符串拼接;其中StringBuffer是线程安全的,它通过Synchronized关键字来实现线程同步。

// StringBuffer中的append()方法

public synchronized StringBuffer append(String str) {

toStringCache = null;

super.append(str);

return this;

}

// StringBuilder中的append()方法

public StringBuilder append(String str) {

super.append(str);

return this;

}

Boolean是常用的类型,在开发中也应该使用Boolean.valueof()而不是new Boolean(),从Boolean的源码可以看出,Boolean类定义了两个final static的属性,而Boolean.valueof()直接返回的是定义的这两个属性,而new Boolean()却会创建新的对象。

public static final Boolean TRUE = new Boolean(true);

public static final Boolean FALSE = new Boolean(false);

2、自动拆箱和装箱


Java提供了基本数据类型的自动拆箱和装箱功能,那是不是意味着我们可以在代码中随意的使用这两个类型呢?其实理论上在代码层面是没得问题,不过在具体的性能方面还是有优化的空间啦!!!

我们来测试下性能

long start = System.currentTimeMillis();

Integer sum = 0;

for (int i = 0; i < 100000; i++) {

sum += i;

}

System.out.println(System.currentTimeMillis() - start);

使用Integer耗时3毫秒

long start = System.currentTimeMillis();

// 修改Integer 为 int

int sum = 0;

for (int i = 0; i < 100000; i++) {

sum += i;

}

System.out.println(System.currentTimeMillis() - start);

使用int耗时0毫秒

因此关于自动拆箱装箱的使用,我们其实也可以做适当的考虑,毕竟有时候代码性能就是一点点挤出来的嘛!!!

3、正则表达式


正则表达式我们经常用于字符串是否合法的校验,我们先来看一段简单的代码(大家有没有一眼看出问题呢?我想你肯定看出来了!!!):

public static void main(String[] args) {

String email = “1057301174@qq.com”;

String regex = “^([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?.)+[a-zA-Z]{2,}$”;

long start = System.currentTimeMillis();

for (int i = 0; i < 10000; i++) {

email.matches(regex);

}

System.out.println(System.currentTimeMillis() - start);

}

最后

这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)

image

image

000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)

[外链图片转存中…(img-Mov3kyKc-1721836175894)]

[外链图片转存中…(img-wBzKSef8-1721836175894)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值