字符串之间的比较

  • compareTo
  • “==”
  • equals

compareTo

示例:

compareTo(string)
compareToIgnoreCase(String)
compareTo(object string)

compareTo(string)

  该示例通过使用上面的函数比较两个字符串,并返回一个int类型。若字符串等于参数字符串、则返回0,字符串小于参数字符串、则返回值小于0,字符串大于参数字符串、返回值大于0。

我的理解:

  compareTo的实质就是前面的字符串与后面的字符串的对应字符相减(从第一个字符开始依次往后进行相减来比较),相等即相减等于0,则继续比较下一个字符的ASCLL码的值,出现不一样的字符,则返回两个字符之间的ASCLL码的差值,还有一种情况:两个字符的长度不一样,而可以参与比较的字符又都完全一样,则返回两个字符串的长度差值。

  数字类型不能用compareTo方法,

compareToIgnoreCase(忽略大小写)

  不考虑大小写,按字典顺序比较两个字符串。此方法返回一个整数,它的正负号是调用compareTo 的正负号,调用时使用了字符串的规范化版本,其大小写差异已通过对每个字符调用 Character.toLowerCase(Character.toUpperCase(character)) 得以消除。

  注意,此方法不考虑语言环境,因此可能在某些特定的语言环境中产生不理想的排序。java.text包提供 Collators来完成语言环境敏感的排序。

另外:

  int型可以直接比较,所以没有用到compareTo比较,如果声明的是Date、String、Integer、或者其他的,可以直接使用compareTo比较。

equals和“==”的区别

  区别在于equals比较的是内容是否相等、而“==”比较的是引用的变量地址是否相等。返回的都是Boolean类型的。

package com.de.test;

public class StringA {
public static void main(String[] args){
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
String s4 = new String("hello");
System.out.println("s1:" + s1);
System.out.println("s2:" + s2);
System.out.println("s3:" + s3);
System.out.println("s4:" + s4);
System.out.println("----------比较内容是否相等---------------");
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
System.out.println(s3.equals(s4));
System.out.println("----------比较引用地址是否相等---------------");
System.out.println(s1 == s2);
System.out.println(s2 == s3);
System.out.println(s3 == s4);
}
} /*
运行结果:
s1:hello
s2:hello
s3:hello
s4:hello
----------比较内容是否相等---------------
true
true
true
----------比较引用地址是否相等---------------
true
false
false
*/

最新文章

  1. adb unknown host service 这个问题的解决,转载
  2. [转载]const_cast
  3. php黑魔法之解析问题
  4. Mybatis知识点总结
  5. [转] ArcEngine 产生专题图
  6. POJ2524 Ubiquitous Religions(并查集)
  7. 最小费用最大流MCMF zkw费用流
  8. UVALive 7299 Boggle(深搜的姿势)
  9. Socket的应用案例
  10. webots自学笔记(五)使用物理插件ODE建立铰链
  11. mysql数据库实操笔记20170418
  12. ES6 函数的扩展(1)
  13. JQuery基本语法(部分)
  14. mysql面试题
  15. COMException: The data necessary to complete this operation is not yet available.
  16. (转)Flask框架+mySQL数据库:误删migrations文件夹后再次创建时遭遇错误(Can't locate revision identified by ‘xxx’)
  17. yum install oracle-validated
  18. Inno Setup入门(三)——指定压缩方式
  19. Java Swing:JPanel添加边框
  20. jquery获取单选button选中的值

热门文章

  1. 12月2日内容总结——边框属性,display属性,css盒子模型,浮动、溢出、定位、z-index属性和建议博客页面搭建
  2. 记录一个排查oom思路
  3. Linux xsync命令脚本
  4. springcloud微服务搭建demo
  5. OPENMP FOR CONSTRUCT GUIDED 调度方式实现原理和源码分析
  6. P21_事件传参与数据同步
  7. P11_组件-button和image组件的基本用法
  8. 树莓派开机启动VNC
  9. 记录一次vue部署docker步骤
  10. 队列——queue的用法(及洛谷B3616)