龙空技术网

java 核心技术-12版 卷Ⅰ- 3.6.4 字符串相等性

CC挑灯夜读1谷 312

前言:

而今同学们对“jsif判断字符串是否相等”大致比较注意,小伙伴们都想要学习一些“jsif判断字符串是否相等”的相关知识。那么小编同时在网摘上网罗了一些对于“jsif判断字符串是否相等””的相关文章,希望咱们能喜欢,大家一起来了解一下吧!

3.6.4 检测字符串是否相等

可以使用equals 方法检测两个字符串是否相等。对于表达式: s.equals(t)

如果字符串 s 与字符串t 相等,则返回 true ; 否则返回false。需要注意的是, s 与t 可以是字符串变量,也可以是字符串字面量。例如,以下表达式是合法的:

“Hello”.equals(greeting)

要想检测两个字符串是否相等,而不区分大小写,可以使用 equalsIgnoreCase 方法。

“Hello”.equalsIgnoreCase(“hello”)

不要使用 == 运算符检测两个字符串是否相等!这个运算符只能够确定两个字符串是否存放在同一个位置上。当然,如果字符串在同一个位置上,它们必然相等。但是,完全有可能将多个相等的字符串副本存放在不同的位置上。

String greeting =”Hello”;// 初始化 greeting 字符串

if(greeting == “Hello”) // 应该是true

if(greeting.substring(0,3) == “Hel”) // 应该为false

如果虚拟机总是共享相等的字符串,则可以使用 == 来判断字符串是否相等。但实际上只有字符串字面量会共享,而+ 或 substring 等操作得到的字符串并不共享。因此,千万不要使用 == 来检测字符串的相等性,否则程序中可能出现最糟糕的一种bug,这种bug 可能会间歇性地随机出现。

C++注释

对于习惯使用C++ string 类的人来说,在完成相等性检测时一定要特别小心。C++ 的 string 类重载了 == 运算符,从而能检测字符串内容的相等性。可惜Java 没有采用这种方式,尽管它的字符串“外观”看起来就像数值一样,但进行相等性检测时,则表现得类似于指针。Java语言的设计者也可以像对+那样进行特殊处理,为字符串重新定义== 运算符。当然,每一种语言都会存在一些不太一致的地方。

C程序员从不使用== 对字符串进行比较,而是使用strcmp 函数。Java的compareTo 方法就类似于strcmp ,因此,可以如下这样使用:

if(greeting.compareTo(“Hello”) == 0) ...

不过,使用 equals 看起来更为清晰。

标签: #jsif判断字符串是否相等 #c语言中比较两个字符串是否相等的函数 #c语言中比较两个字符串是否相等