字符串对象的比较

文章目录

  • 字符串对象的比较
  • 1、==:比较是对象的地址
  • 2、equals:比较是字符串对象的内容
  • 3、equalsIgnoreCase:比较的是字符串对象的内容,不区分大小写
  • 4、compareTo
  • 5、compareToIgnoreCase 大小比较:不区分大小写
  • 6、按照每个国家的语言校对顺序
  • 7、参考资料

1、==:比较是对象的地址

==:比较是对象的地址

只有两个字符串变量都是指向字符串的常量对象时,才会返回true,,其他的都是false

@Testpublic void test01() {String s1 = "hello";String s2 = "hello";System.out.println(s1 == s2);//true}
@Testpublic void test02() {String s1 = new String("hello");String s2 = "hello";System.out.println(s1 == s2);//false}
 @Testpublic void test03() {String s1 = new String("hello");String s2 = new String("hello");System.out.println(s1 == s2);//false}

2、equals:比较是字符串对象的内容

equals:比较是字符串对象的内容,因为String类型重写equals,区分大小写

只要两个字符串的字符内容相同,就会返回true

 public void test04() {String s1 = new String("hello");String s2 = new String("hello");System.out.println(s1.equals(s2));//trueString s3 = "hello";System.out.println(s3.equals(s1));//trueString s4 = "Hello";System.out.println(s3.equals(s4));//false}

3、equalsIgnoreCase:比较的是字符串对象的内容,不区分大小写

equalsIgnoreCase:比较的是字符串对象的内容,不区分大小写

 @Testpublic void test05() {String s1 = new String("hello");String s2 = new String("hello");System.out.println(s1.equalsIgnoreCase(s2));//trueString s3 = "hello";System.out.println(s3.equalsIgnoreCase(s1));//trueString s4 = "Hello";System.out.println(s3.equalsIgnoreCase(s4));//true}

4、compareTo

compareTo:String类型实现了Comparable接口,重写了Comparable接口的抽象方法,自然排序,按照字符的Unicode编码值进行比较大小的,严格区分大小写

依次比较对应位置的字符

  • hello和Hello,先[0]位置的h和H,h>H,就直接认定为hello>Hello
  • hello和hella,先[0][1][2][3]比较,都一样,最后到[4]o>[4]a,认定hello>hella
  • hello和helloworld,发现前面都一样,长的大
@Testpublic void test06() {String s1 = new String("hello");String s2 = new String("helloworld");/*    if(s1 > s2){//不能直接使用比较运算符}*/if (s1.compareTo(s2) > 0) {System.out.println(s1 + ">" + s2);} else if (s1.compareTo(s2) < 0) {System.out.println(s1 + "<" + s2);//hello<helloworld} else {System.out.println(s1 + "=" + s2);}String str1 = "hello";String str2 = "world";System.out.println(str1.compareTo(str2) );//小于0的值 -15}

5、compareToIgnoreCase 大小比较:不区分大小写

compareToIgnoreCase 大小比较:不区分大小写
String类型提供了一个方法compareToIgnoreCase,可以忽略大小写比较大小

compareToIgnoreCase:不区分大小写,其他按照字符的Unicode编码值进行比较大小

 @Testpublic void test07() {String s1 = new String("hello");String s2 = new String("Hello");if (s1.compareToIgnoreCase(s2) > 0) {System.out.println(s1 + ">" + s2);} else if (s1.compareToIgnoreCase(s2) < 0) {System.out.println(s1 + "<" + s2);} else {System.out.println(s1 + "=" + s2);//hello=Hello}System.out.println(s1.compareToIgnoreCase(s2));//等于0}

6、按照每个国家的语言校对顺序

java.text.Collator:Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排序例程。

Collator实现了Comparator接口 ,

Collator是抽象类,不能直接创建对象,它有一个直接子类RuleBasedCollator

Collator内部提供了一个静态方法,可以获取一个它的子类对象
自然排序:实现java.lang.Comparable接口,int compareTo(Object obj)

定制排序

collator n. 整理器;核对人;校对机

demo

    @Testpublic void test08() {String[] arr = {"hello", "china", "Java", "World", "Hi"};//排序//按照字母的顺序排列Arrays.sort(arr);//按照元素的自然顺序排序System.out.println(Arrays.toString(arr));//小到大//[Hi, Java, World, china, hello]}
@SuppressWarnings("all")@Testpublic void test09() {String[] arr = {"hello", "China","china", "java","Java", "World", "Hi"};//排序//按照字母的顺序排列,不区分大小写Arrays.sort(arr, new Comparator() {@Overridepublic int compare(Object o1, Object o2) {String s1 = (String) o1;String s2 = (String) o2;return s1.compareToIgnoreCase(s2);}});//按照元素的自然顺序排序System.out.println(Arrays.toString(arr));}
    @Testpublic void test10() {String[] arr = {"菜鸡文", "张三", "李四", "柳小子", "牛菜鸟"};Arrays.sort(arr);//按照自然顺序,按照每一个字符的Unicode编码值排序的System.out.println(Arrays.toString(arr));System.out.println('柳' + 0 );//\u67f3  26611System.out.println('牛' + 0 );// \u725b 29275}
    @Testpublic void test11() {String[] arr = {"张三", "张阿", "李四", "李八","王五", "柳柳"};//希望按照拼音顺序,字典顺序Arrays.sort(arr, Collator.getInstance());//默认语言环境,因为我现在的操作系统的平台是中文winSystem.out.println(Arrays.toString(arr));//[李八, 李四, 柳柳, 王五, 张阿, 张三]}
    @Testpublic void test12() {String[] arr = {"张三", "张阿", "李四", "李八","王五", "柳柳"};//希望按照拼音顺序,字典顺序Arrays.sort(arr, Collator.getInstance(Locale.CHINA));//Locale.CHINA指定语言环境System.out.println(Arrays.toString(arr));//[李八, 李四, 柳柳, 王五, 张阿, 张三]}

7、参考资料

记录 - 搞定Java核心技术

从Hello到goodbye

【Java】字符串对象的比较(==、equals、equalsIgnoreCase、compareTo、compareToIgnoreCase、校对顺序比较)相关推荐

  1. 【Java基础】Java字符串的处理

    目录 一.Java定义字符串 1.直接定义字符串 2.用构造函数创建字符串: 二.Java连接字符串 1.使用连接运算符 2.使用 concat() 方法 3.连接其他类型数据 三.Java获取字符串 ...

  2. java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

    Java中创建String 对象的方法有哪些 发布时间:2020-11-25 16:45:30 来源:亿速云 阅读:71 作者:Leah 这篇文章将为大家详细讲解有关Java中创建String 对象的 ...

  3. scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别

    这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...

  4. java compare equla_Java中的equals,==,compareTo和compare的比较

    Java中的equals(),==,compareTo()和compare() 首先只有==可以用作两个基本类型数据之间的比较,当然是值比较.当用作两个对象比较时,比较的是对象引用,而不是值比较. 其 ...

  5. Java字符串equals()

    Java String equals() method is used to compare this string with the passed object as argument. Java字 ...

  6. java:对象比较的三种方法equals()方法,Comparator接口,Comparable接口

    一.java中对象的比较 方法: 1.==和equals方法(只能比较是否相等,无法比较大小) 2.hashCode()和equals()方法(可比大小,或用来排序) 3.Comparator接口和C ...

  7. Java中什么是字符串的拷贝_关于java中字符串对象的拷贝

    1两种数据类型 java中有两种数据类型: 基本数据类型 引用数据类型 基本数据类型有整型.浮点型的数字常量和字符常量,而类是引用数据类型,所谓引用就是一个对象等于另外一个对象时(前提同一类),都使用 ...

  8. Java会被禁吗_关于java:如果字符串对象被禁闭,那么为什么一个更改不会影响其他对象...

    本问题已经有最佳答案,请猛点这里访问. 如果字符串对象被禁闭,那么为什么更改一个对象不会影响其他对象 public class EqualExample { public static void ma ...

  9. java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

最新文章

  1. python 判断字符串是否全部为数字组成(使用isdigit)
  2. 后台传Map到ftl
  3. 将可执行程序的内存空间扩展到3GB(windows)
  4. 天融信TOS系统命令行下查看资源使用情况
  5. [JZOJ5863] 【NOIP2018模拟9.11】移动光标
  6. express接受get数据
  7. html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析
  8. p内的a截取字符串,会将a与p的其他内容撑开(IE6、IE7)
  9. java微调器_java-更改微调器标题栏样式
  10. win11适合玩游戏吗 Windows11打游戏怎么样
  11. 基于Householder变换的QR分解
  12. 如何在EDUIS中导出ETL字幕模板_给视频加字幕?这8个工具助力你的短视频创作!...
  13. 知识产权服务代理行业税收政策
  14. 使用逐步细化开发 DFD
  15. 电子基础知识:测判三极管的口诀
  16. 水处理离子交换设备详解
  17. 搞定这套 Python 爬虫面试题,面试会 so easy
  18. 上海店宝宝:电商靠谱助力农产品出村进城
  19. 光度测量类有哪些最新发表的毕业论文呢?
  20. 在金蝶云星空中获取单据体信息的两种方法

热门文章

  1. 深度学习的关键:无监督深度学习简介(附Python代码)
  2. 掘金沸点论坛, 我是如何从零到1搭建的
  3. 计算机画画小游戏,这个突然爆火的小游戏,简直是你朋友圈画画水平的照妖镜!...
  4. 计算机加域输入用户名密码闪退,Windows 10加入AD域,设置指纹,出现Windows hello 闪退,无法设置指纹。...
  5. 无法设置未定义或 null 引用的属性innerText
  6. VS打开项目出现一堆未定义标识符的解决办法
  7. 并发编程的三大特性——有序性(ordering)
  8. python列表查重_Python列表去重
  9. C语言OJ 大象喝水
  10. Layui-前端-jquery