【Java】字符串对象的比较(==、equals、equalsIgnoreCase、compareTo、compareToIgnoreCase、校对顺序比较)
字符串对象的比较
文章目录
- 字符串对象的比较
- 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、校对顺序比较)相关推荐
- 【Java基础】Java字符串的处理
目录 一.Java定义字符串 1.直接定义字符串 2.用构造函数创建字符串: 二.Java连接字符串 1.使用连接运算符 2.使用 concat() 方法 3.连接其他类型数据 三.Java获取字符串 ...
- java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...
Java中创建String 对象的方法有哪些 发布时间:2020-11-25 16:45:30 来源:亿速云 阅读:71 作者:Leah 这篇文章将为大家详细讲解有关Java中创建String 对象的 ...
- scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别
这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...
- java compare equla_Java中的equals,==,compareTo和compare的比较
Java中的equals(),==,compareTo()和compare() 首先只有==可以用作两个基本类型数据之间的比较,当然是值比较.当用作两个对象比较时,比较的是对象引用,而不是值比较. 其 ...
- Java字符串equals()
Java String equals() method is used to compare this string with the passed object as argument. Java字 ...
- java:对象比较的三种方法equals()方法,Comparator接口,Comparable接口
一.java中对象的比较 方法: 1.==和equals方法(只能比较是否相等,无法比较大小) 2.hashCode()和equals()方法(可比大小,或用来排序) 3.Comparator接口和C ...
- Java中什么是字符串的拷贝_关于java中字符串对象的拷贝
1两种数据类型 java中有两种数据类型: 基本数据类型 引用数据类型 基本数据类型有整型.浮点型的数字常量和字符常量,而类是引用数据类型,所谓引用就是一个对象等于另外一个对象时(前提同一类),都使用 ...
- Java会被禁吗_关于java:如果字符串对象被禁闭,那么为什么一个更改不会影响其他对象...
本问题已经有最佳答案,请猛点这里访问. 如果字符串对象被禁闭,那么为什么更改一个对象不会影响其他对象 public class EqualExample { public static void ma ...
- java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
最新文章
- PyCharm_10个加速省时间技巧
- influxdb tsm文件_利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏
- C#和.Ne学习第五天
- 【bzoj5197】[CERC2017]Gambling Guide 期望dp+堆优化Dijkstra
- mysql-3 检索数据(1)
- 实现秒杀的几个想法(续)
- .NET 项目中的单元测试
- 计算机弹歌曲做我老婆好不好,做我老婆好不好吉他谱(图片谱,指弹,做我老婆好不好,徐誉滕)_徐誉滕(徐海;徐歆舜)...
- [蓝桥杯历届试题] 欧拉与鸡蛋
- 数据库学习笔记---SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)
- simpana oracle,华为认证云运维专家(HCIE-CDO)
- context-param标签含义及与init-param标签的异同(转)
- SQL SERVER 查找某个字符在字符串中出现的次数
- 【408考研计划】计算机组成原理
- 银行开发专业术语解释和银行系统开发架构的设计思想
- 图像处理学习--银行卡号码识别(1)
- [leetcode] 69 Sqrt(x)
- MCS-51单片机寻址方式详解
- uniapp的button按钮使用boder:none依然无法去掉黑色边框的解决。
- java一个字符几个字节_Java 语言中一个字符占几个字节?