小问题大智慧

59 篇文章 2 订阅
45 篇文章 0 订阅

说到字符串比较,大家都知道,但你真的知道如何比较才是最正确的吗?

不知道的人,几乎都是用以下方法来比较的

String str = null
if (str == null || str.equals("")) {
}

这实际上是效率最低的,正确的做法是:

String str = null;
if (str == null || str.isEmpty()) {
}

但上述方法需要jdk在1.6以上,那么也可以用:

String str = null;
if (str == null || str.length() == 0) {
}

另外str.equals("1")与"1".equals(str)不同,前者如果str为null,会报空指针异常,而后者不会。

上述问题虽然看似简单,但却反映出一名程序员的编程素质和态度,在我以前的文章中曾反复强调,一段好的代码,不是说实现功能就完了,而是在实现功能的前提下如何能高效、稳定、健全。同样的业务,你可能要花费1s,别人却只需0.3s,放大到服务器上,在高负载的情况下,别人的项目能正常运行,你的就挂了。

无论是怎样优秀的程序员,也都是从无知到有知,谁都是从菜鸟级别一步步成长来的,但一些人在成长到一定阶段后便再也无法成长的原因在于,欠缺思考、永不放弃的坚强毅力和追求理想的心态。

软件本身代表着自动化、智能化、高效化,软件是有代码编写而来的,因此代码本身也是具有这些特征的,一些程序员之所以显得“苦逼”,日日夜夜写代码,实际根本原因在于代码质量不高,失去了代码本身的特色,变成了纯粹体力话,不断重复着缝缝补补、复制粘贴。将自己由一个“艺人”变成了“工人”。

所以,要想成为艺术大师,就必须从小做起,一点一滴不断加深思考,要有不满足于现状,最求完美的心态。

以下,我还总结了一些例子,大家可以进一步体会下:

1.

for (int i = 0; i < size() * 2; i++) {
}
for (int i = 0, stop = size() * 2; i < stop; i++) {
}

2.

if (birds.elementAt(i).isGrower()) ...
if (birds.elementAt(i).isPullet()) ... 
Bird bird = birds.elementAt(i);
if (bird.isGrower()) ...
if (bird.isPullet()) ... 

3.

TestBean bean = new TestBean();
if (bean instanceof TestBean) {
}
TestBean bean = new TestBean();
if (bean.getClass().equals(TestBean.class)) {
}

4. 用switch代替长if-else-if

String s = "";
for (int i = 0; i < n; i++) {
	s += "#" + i;
}
StringBuilder sbuf = new StringBuilder();
for (int i = 0; i < n; i++) {
	sbuf.append("#").append(i);
}
String s = sbuf.toString();

但如果是

String s = "(" + x + ", " + y + ")";

会自动编译使用StringBuilder.append(""),这样拼字符串是可以的。

5. 实体类的get、set方法,加上final

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值