【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的更多知识, ...
最新文章
- python 判断字符串是否全部为数字组成(使用isdigit)
- 后台传Map到ftl
- 将可执行程序的内存空间扩展到3GB(windows)
- 天融信TOS系统命令行下查看资源使用情况
- [JZOJ5863] 【NOIP2018模拟9.11】移动光标
- express接受get数据
- html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析
- p内的a截取字符串,会将a与p的其他内容撑开(IE6、IE7)
- java微调器_java-更改微调器标题栏样式
- win11适合玩游戏吗 Windows11打游戏怎么样
- 基于Householder变换的QR分解
- 如何在EDUIS中导出ETL字幕模板_给视频加字幕?这8个工具助力你的短视频创作!...
- 知识产权服务代理行业税收政策
- 使用逐步细化开发 DFD
- 电子基础知识:测判三极管的口诀
- 水处理离子交换设备详解
- 搞定这套 Python 爬虫面试题,面试会 so easy
- 上海店宝宝:电商靠谱助力农产品出村进城
- 光度测量类有哪些最新发表的毕业论文呢?
- 在金蝶云星空中获取单据体信息的两种方法
热门文章
- 深度学习的关键:无监督深度学习简介(附Python代码)
- 掘金沸点论坛, 我是如何从零到1搭建的
- 计算机画画小游戏,这个突然爆火的小游戏,简直是你朋友圈画画水平的照妖镜!...
- 计算机加域输入用户名密码闪退,Windows 10加入AD域,设置指纹,出现Windows hello 闪退,无法设置指纹。...
- 无法设置未定义或 null 引用的属性innerText
- VS打开项目出现一堆未定义标识符的解决办法
- 并发编程的三大特性——有序性(ordering)
- python列表查重_Python列表去重
- C语言OJ 大象喝水
- Layui-前端-jquery