字符串对象的比较

文章目录

  • 字符串对象的比较
  • 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. PyCharm_10个加速省时间技巧
  2. influxdb tsm文件_利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏
  3. C#和.Ne学习第五天
  4. 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra
  5. mysql-3 检索数据(1)
  6. 实现秒杀的几个想法(续)
  7. .NET 项目中的单元测试
  8. 计算机弹歌曲做我老婆好不好,做我老婆好不好吉他谱(图片谱,指弹,做我老婆好不好,徐誉滕)_徐誉滕(徐海;徐歆舜)...
  9. [蓝桥杯历届试题] 欧拉与鸡蛋
  10. 数据库学习笔记---SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)
  11. simpana oracle,华为认证云运维专家(HCIE-CDO)
  12. context-param标签含义及与init-param标签的异同(转)
  13. SQL SERVER 查找某个字符在字符串中出现的次数
  14. 【408考研计划】计算机组成原理
  15. 银行开发专业术语解释和银行系统开发架构的设计思想
  16. 图像处理学习--银行卡号码识别(1)
  17. [leetcode] 69 Sqrt(x)
  18. MCS-51单片机寻址方式详解
  19. uniapp的button按钮使用boder:none依然无法去掉黑色边框的解决。
  20. java一个字符几个字节_Java 语言中一个字符占几个字节?

热门文章

  1. 软件测试工程师面试题
  2. Analytic Partners勘讯咨询:促销和定价优化策略的五大关键点
  3. 推测30以内具体数字
  4. 百度分享share.js插件
  5. 微信小程序开发纪实-菜鸟新手入门
  6. Android 自定义 Lint 实现静态代码扫描工具
  7. 微信小程序获取用户头像昵称
  8. 毕业生必须知道:干部身份、三方协议、派遣证(不因无知而后悔)
  9. 51单片机开发实例 基于52单片机的远程开锁系统
  10. imfinfo matlab,MATLAB函数imfinfo函数