加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Java中那些让你傻傻分不清楚的小技巧

发布时间:2021-06-06 08:29:24 所属栏目:编程 来源:互联网
导读:媒介 最近我们通过sonar静态代码检测,同时共同人工代码review,发明白项目中许多代码题目。除了通例的bug和安详裂痕之外,尚有几处要领用法错误,引起了我极大

最近我们通过sonar静态代码检测,同时共同人工代码review,发明白项目中许多代码题目。除了通例的bug和安详裂痕之外,尚有几处要领用法错误,引起了我极大的乐趣。我为什么会对这几个要领这么感乐趣呢?由于它们极具疑惑性,也许会让我们傻傻分不清晰。

1. replace会替代全部字符?

许多时辰我们在行使字符串时,想把字符串好比:ATYSDFA*Y中的字符A替代成字符B,第一个想到的也许是行使replace要领。

假如想把全部的A都替代成B,很显然可以用replaceAll要领,由于很是直观,光从要领名就能猜出它的用途。

那么题目来了:replace要了解替代全部匹配字符吗?

jdk的官方给出了谜底。

该要了解替代每一个匹配的字符串。

既然replace和replaceAll都能替代全部匹配字符,那么他们有啥区别呢?

1.replace有两个重载的要领。

个中一个要领的参数:char oldChar 和 char newChar,支持字符的替代。

source.replace('A', 'B') 

另一个要领的参数是:CharSequence target 和 CharSequence replacement,支持字符串的替代。

source.replace("A", "B") 

2.replaceAll要领的参数是:String regex 和 String replacement,基于正则表达式的替代。平凡字符串替代:

source.replaceAll("A", "B") 

正则表达替代(将*替代成C):

source.replaceAll("*", "C") 

趁便说一下,将*替代成C行使replace要领也可以实现:

source.replace("*", "C") 

无需对非凡字符举办转义。

不外,万万留意,切勿行使如下写法:

source.replace("*", "C") 

这种写法会导致字符串无法替代。

尚有个小题目,假如我只想替代第一个匹配的字符串该怎么办?

这时可以行使replaceFirst要领:

source.replaceFirst("A", "B") 

2. Integer不能用==判定相称?

不知道你在项目中有没有见过,有些同事对Integer范例的两个参数行使==较量是否相称?

横竖我见过的,那么这种用法对吗?

我的答复是看详细场景,不能说必然对,或差池。

有些状态字段,好比:orderStatus有:-1(未下单),0(已下单),1(已付出),2(已完成),3(打消),5种状态。

这时假如用==判定是否相称:

Integer orderStatus1 = new Integer(1); 

 Integer orderStatus2 = new Integer(1); 

 System.out.println(orderStatus1 == orderStatus2); 

返回功效会是true吗?

谜底:是false。

有些同窗也许会辩驳,Integer中不是有范畴是:-128-127的缓存吗?

为什么是false?

Java中那些让你傻傻分不清晰的小能力

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读