论equals与==不同的重要性
首先借鉴一下CSDN前辈的总结:
在编程中,通常比较两个字符串是否相同的表达式是“==” ,但在 Java 中不能这么写。在 Java 中,如果要比较 a 字符串是否等于 b 字符串,需要这么写: if(a.equals(b)){ } 返回 true 或 false equals()方法 方法 String 的 equals()方法用于比较两个字符串是否相等。由于字符串是对象类型,所以不能 简单的用“==” (双等号)判断两个字符串是否相等,而使用 equals()方法比较两个对象的内 容。 语法: boolean equals(String str) str:要作比较的字符串对象。 返回:如果和 String 相等则为 true;否则为 false。 例如字符串“abc” 和一个新的字符串“abc” 比较的结果为“true” 因为它们内容相同。 , 注意: equals()方法比较的是对象的内容(区分字母的大小写格式) ,但是如果使用“==”双等 号操作符比较两个对象时, 比较的是两个对象的内存地址, 所以它们不相等 (即使内容相同, 不同对象的内存地址也是不相同的)来自http://blog.csdn.net/wletv/article/details/6947880
今天写的词法分析器,因为要进行字符串比较,在标示符,关键字判断上总是出错。。。╮( ̄▽ ̄")╭ 改了半天就是不知道为啥不想等,,,,最后读了上边的内容才发现不能用==来比较字符串,因为他不仅要求内容相等,还有对象地址也要相等。。。。。。
还有假如你写很多个IF,,最后再写一个else时,一定要避免重复判断,及时跳出。因为对于词法分析,里面可能存在包含关系(intaaa>int)一个是标示符,一个是关键字哦。
个人感受,有错还望及时指出。