Java中字符串相等与大小比较

转载 2016年02月18日 03:51:38
在C++中,两个字符串比较的代码可以为:
(string1==string2)
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
Java中必须使用string1.equals(string2)来进行判断

补充

如果:
string s1="Hello";
string s2="Hello";
则(s1==s2)=true;
因为他们指向的同一个对象。

如果:
String s1=new String("Hello");
String s2=new String("Hello");
则(s1==s2)=false

如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容

例如:
String string1=new String( "aaa" );
String string2=new String( "aaa" );
这两个字符串当然应该是相等的。
如果用表达式string1==string2,则该表达式的值为false
如果用表达式string1.equals(string2),则该表达式的值为true
因此应该用string1.equals(string2),在if语句中就是
if(string1.equals(string2)==true) //字符串相等,……

string1==string2,是值相等,而且内存地址也相等,是完全的相等
string1.equals(string2)为true,只是值相等


如果比较字符串的大小使用:str1.compareTo(String str2)


按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0compareTo 只在方法 equals(Object) 返回 true 时才返回 0。
这 是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如 果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值:

this.charAt(k)-anotherString.charAt(k)

如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差,即值:

this.length()-anotherString.length()


java简单的字符串大小比较——compareTo()方法

在java编程中,我们会偶尔遇到字符串大小比较的问题,compareTo()方法很简单就实现这种功能。该方法用于判断一个字符串是大于、等于还是小于另一个字符串。判断字符串大小的依据是根据它们在字典中的...
  • Evan123mg
  • Evan123mg
  • 2015年06月22日 19:50
  • 18230

JAVA中字符串比较equals()和equalsIgnoreCase()的区别

1、使用equals( )方法比较两个字符串是否相等。它具有如下的一般形式: boolean equals(Object str) 这里str是一个用来与调用字符串(String)对象做比较的字符...
  • yujian_bing
  • yujian_bing
  • 2012年11月11日 16:03
  • 119815

java 中字符串比较用=和equals区别

=:是比较两个字符串引用的地址是否相同,即是否指向同一个对象 equals方法:则比较字符串的内容是否相同。 例如String a = "abc";     String b = "...
  • u010398493
  • u010398493
  • 2017年03月02日 21:57
  • 1121

java中两个字符串如何比较大小

有两个日期 如20131011,20131030,类型为String,如何比较出20131030大于20131011,求java代码 有三种方法实现第一种直接用字符串类的compar...
  • hjm4702192
  • hjm4702192
  • 2014年03月28日 16:22
  • 3340

java 判断字符串是否相等

判断字符串相等我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题。 java中判断字符串是否相等有两种方法: 1、用“==”运算符,该运算符表示指向字符串的引用是...
  • chthq
  • chthq
  • 2012年08月26日 19:37
  • 41599

java实现两个字符串的比较

compareTo方法是比较两个字符串的词典顺序  也就是在字典中的顺序,比如“abcd”在“acdb”前面  另外你应该先把字符串转变成int,然后再比较  可以用下面的方法比较两个整数  ...
  • L_serein
  • L_serein
  • 2012年03月26日 22:19
  • 30317

Java 比较字符串之间大小

LZ-Says:心态调整好~啥事儿都得开开心心的~ 前言公司让实现一个自动清除1小时内数据,SQL不熟悉,无奈之下,只能本地DB存储当前时间+小时去和当前时间进行比对。折腾好半天,突然想到Java提供...
  • u012400885
  • u012400885
  • 2017年03月28日 23:44
  • 1128

java中两个字符串如何比较大小

有三种方法实现 第一种直接用字符串类的compareTo方法: 1 2 3   String t1="20131011";   Stri...
  • luo446718254
  • luo446718254
  • 2015年05月20日 12:18
  • 6134

java中两个字符串比较大小

java编程中经常遇到需要比较两个字符串比较大小的需求, 字符串一般分成两类: 第一类:纯数字的字符串,如日期转换的字符串 第二类:非纯数字的字符串。 直接用字符串类的compareTo方法: 如...
  • wanglei880526
  • wanglei880526
  • 2014年03月25日 15:50
  • 5665

Java源码-字符串大小比较(Comparing Strings)

通过这个例子,发现了JavaDoc中的一个问题: compareTo方法返回的结果按理和两个字符串在字典中的先后位置一致,即,小的排前,这个说法并不适合中文。 如,“海”和“斌”,中文字典排序(按汉语...
  • hpdlzu80100
  • hpdlzu80100
  • 2016年08月08日 23:35
  • 1195
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java中字符串相等与大小比较
举报原因:
原因补充:

(最多只允许输入30个字)