在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 对象位于參数字符串之后,则比較结果为一个正整数。

假设这两个字符串相等,则结果为 0。compareTo
仅仅在方法 equals(Object) 返回 true 时才返回 0。

这 是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引)。要么长度不同,或者同一时候具备这两种情况。如 果它们在一个或多个索引位置上的字符不同,如果 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其它字符串之前。在这样的情况下,compareTo
返回这两个字符串在位置 k 处两个char 值的差,即值:



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



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

this.length()-anotherString.length()

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Java中字符串相等与大小比較的更多相关文章

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

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  2. 统计java中字符串,数组,集合大小(长度)

    字符串长度用String.length(); 数组用String[].length; 集合用collection.size();

  3. Java中字符串为什么不以\0结尾

    Java中字符串为什么不以\0结尾 其实这个问题没有什么好说的,Java里面一切都是对象,是对象的话,字符串肯定就有长度,即然有长度,编译器就可以确定要输出的字符个数,当然也就没有必要去浪费那1字节的 ...

  4. 三张图彻底了解Java中字符串的不变性

    转载: 三张图彻底了解Java中字符串的不变性 定义一个字符串 String s = "abcd"; s中保存了string对象的引用.下面的箭头可以理解为"存储他的引用 ...

  5. java中字符串的非空判断

    问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和 ...

  6. java中字符串String 转 int(转)

    java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...

  7. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int ...

  8. Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字 ...

  9. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

随机推荐

  1. Codeforces 160 D. Edges in MST

    \(>Codeforces \space 160 D. Edges in MST<\) 题目大意 : 给出一张带权无向图,求对于这张图上的每一条边,其是必然存在于每一种最小生成树中,还是至 ...

  2. bzoj1116 [POI2008]CLO 边双联通分量

    只需对每个联通块的$dfs$树检查有没有返租边即可 复杂度$O(n + m)$ #include <cstdio> #include <cstring> using names ...

  3. 【插头DP】BZOJ3125-city

    开学忙成狗,刷题慢如蜗牛…… [题目大意] 给出一个m*n的矩阵里面有一些格子为障碍物,一些格子只能上下通行,一些格子只能左右通行,一些格子上下左右都能通行.问经过所有非障碍格子的哈密顿回路个数. [ ...

  4. 不思议迷宫:逆向后的放置play

    前言 前置准备 目标分析 逆向加密逻辑 定位sign与key 解密luac 反编译luajit的bytecode 开启上帝模式 前言     看了fatezero的<阴阳师:一个非酋的逆向旅程& ...

  5. Linux下Shell命令的输出信息同时显示在屏幕和保存到日志文件中

    #直接覆盖日志文件 ls -l | tee ./t.log #将输出内容附加到日志文件 ls -l | tee -a ./t.log 使用的是tee命令

  6. openCV+ASM+LBP+Gabor实现人脸识别(GT人脸库)

    原理:使用GT人脸库做样本,VS2010下使用openCV2.44自带的Haar算法检測人脸区域,ASM Library特征检測,然后使用YCrCb颜色空间做肤色检測,再用LBP+Gabor小波提取特 ...

  7. Java-方法的覆写

    class  parent {  void print()  {  System.out.println("parent");  } } class child extends p ...

  8. Mysql5.7全新的root密码规则

    http://blog.csdn.net/erlib/article/details/48003681

  9. linux /proc/pid进程信息说明

    转:http://hi.baidu.com/sei_zhouyu/item/3ab5bc9fb2ea29c3b6253140 /proc/pid/是进程目录,存放的是当前运行进程的信息. 譬如apac ...

  10. Photoshop的版本体系

    Photoshop CS6 和Photoshop CC的区别 没有什么玄乎的,仅仅是版本不一样. 版本的命名 Photoshop CS6 是CS系列的最后一版本, Adobe Photoshop CS ...