为什么代码中尽量少出现"123"equals(str)这样的危险字符?解决方法
发布时间:2010-06-05 05:30:43 文章来源:www.iduyao.cn 采编人员:星星草
为什么代码中尽量少出现"123".equals(str)这样的危险字符???
.代码中尽量少出现"123".equals(str)这样的危险字符,而要public static final StringSTR = "123"; STR.equals(str)去代替.
求解释
------解决方案--------------------
如果你写的只是个小程序,这样当然没什么影响。
如果系统代码几K,几十K,甚至成千上百K,那么这样写肯定是危险的俄
------解决方案--------------------
比如 你有恨多地方都需要喝123比较
如果用static final你只需要修改1个地方
如果很多地方都用"123".equels("XX")就需要分别修改。这样做的结果就是很容易漏改,或改错
------解决方案--------------------
统一在一个地方对定义,供多处使用,如果你确认你会永久一看到这代码就可以明白"123".equals(str)中的数字什么是什么意思,同时你也能确保"123"以后永久不会改变,这样就无危险可严。。。.说其危险只是夸张了下,是要引起程序员的注意
------解决方案--------------------
这种称为“魔法常量”,也就是说莫名其妙地一个字面常量,让人不知道这是干嘛的,为什么要用这个。
------解决方案--------------------
这种代码里直接出现的数字或字符串,叫“魔鬼数字”或“魔鬼变量”
给你具个例子,通讯项目代码里经常要用"WCDMA",代码里可能成百上千处需要,
如果都直接写"WCDMA",
1)某处不小心写错了,编译器不会提醒你的;而定义了一个常量,各处使用,肯定不会错
2)某天为了规范,要改为"UMTS",要不一个个改,要不全部替换,都是又费神又有危险的操作;而定义了一个常量,只需修改这一处即可。
PS:ls sunyiz兄说的很好,字符串与常量比较时,str.equals("123")前面一定要先判断str是否为null:(null != str)&&(str.equals("123"),而为null的判断经常会忘掉的;"123".equals(str)
就没问题了,即使str为null也正常判断为false。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
[技术讨论]谈谈Android开发中的Java。
谈谈Android开发中的Java。
谁说得好,谁分多。
------解决方案--------------------
钱多...
-
JMenuBar问题
JMenuBar只能放在frame最上面?不能放在当中?
------解决方案--------------------
可以你想怎么搞都可以的.
下...
-
要提取这串内容的连接怎么有问题?
<a href="http://www.92mp3.com/lrc/lrc.asp?ac=down&id=17656&gq=晴天" target=_blank>LRC歌词...
-
我吐 - 对提问者的不负责任,误导他人
http://topic.csdn.net/u/20110916/13/1cebe474-27b1-4c5e-ba6a-b35c06332802.html?seed=169...
-
怎么读秒?
就是设计一个线程,让他每秒读一边,怎么实现?这个for循环怎么写比较好?
------解决方案--------------------
1 可参考Quar...
-
关于Swing单选问题
为什么我用 swing的单选按钮的时候可以多选?
要怎么设置才不会多选
代码: int margin = 30;
for (int ...
-
关于线程的问题
java写的歌词显示,一个panel,画出歌词,run里有两个功能,一个是重画,让歌词动起来,一个是每秒获得一个歌词的句子让歌词...
-
这段代码有问题,谁能帮我看看?左边拉不过去!
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimensio...
-
这两个字符表示什么意思
public class Interest
{
public static void main(String args[])
{
double amount;
double pr...
-
一些问题!
一个是使用HttpCilent的时候什么时候用get方法,什么时候用post方法?
还有就是些文档的时候设计和实现两块怎么区分,感觉有...