iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java string中的compareTo方法怎么使用
  • 693
分享到

Java string中的compareTo方法怎么使用

2023-06-22 04:06:25 693人浏览 八月长安
摘要

这篇文章主要讲解了“Java string中的compareTo方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java string中的compareTo方法怎么使用”吧!一,j

这篇文章主要讲解了“Java string中的compareTo方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java string中的compareTo方法怎么使用”吧!

一,java.lang.Comparable 接口

Comparable 接口强制了实现类对象列表的排序。其排序称为自然顺序,其 compareTo 方法,称为自然比较法

public interface Comparable<T> {    public int compareTo(T o);}

如果用this代表当前调用该compareTo方法的对象,obj是方法传入参数

则:

this  <  obj   ---- 返回负数    this  =  obj   ---- 返回 0    this  >  obj   ---- 返回正数

Comparable接口的compareTo是一种内比较,即支持跟当前对象比较

二,java.util.Comparator 接口

Comparator可以认为是是一个外比较器,一个对象不支持自己和自己比较(没有实现Comparable接口),但是又想对两个对象进行比较

public interface Comparator<T> {    int compare(T o1, T o2);    //省略...........}

比较逻辑:

o1  <  o2   ---- 返回负数    o1  =  o2   ---- 返回 0    o1  >  o2   ---- 返回正数

三,聊聊string中的compareTo方法

String中实现的是Comparable接口来为String对象作出比较逻辑

public final class String    implements java.io.Serializable, Comparable<String>, CharSequence{        //........    }

先看一段示例:

public class StrinGComparisonDemo {    public static void main(String[] args) {        String foo = "ABC";        // 前面和后面每个字符完全一样,返回 0        String bar01 = "ABC";        System.out.println(foo.compareTo(bar01));        // 前面每个字符完全一样,返回:后面就是字符串长度差        String bar02 = "ABCD";        String bar03 = "ABCDE";        System.out.println(foo.compareTo(bar02)); // -1 (前面相等,foo 长度小 1)        System.out.println(foo.compareTo(bar03)); // -2 (前面相等,foo 长度小 2)        // 前面每个字符不完全一样,返回:出现不一样的字符 ASCII 差        String bar04 = "ABD";        String bar05 = "aABCD";        System.out.println(foo.compareTo(bar04)); // -1  (foo 的 'C' 字符 ASCII 码值为 67,bar04 的 'D' 字符 ASCII 码值为 68。返回 67 - 68 = -1)        System.out.println(foo.compareTo(bar05)); // -32 (foo 的 'A' 字符 ASCII 码值为 65,bar04 的 'a' 字符 ASCII 码值为 97。返回 65 - 97 = -32)        String bySocket01 = "泥瓦匠";        String bysocket02 = "瓦匠";        System.out.println(bysocket01.compareTo(bysocket02));// -2049 (泥 和 瓦的 Unicode 差值)    }}

结果:

0
-1
-2
-1
-32
-2049

再结合上边示例看看String中对compareTo方法的实现

   public int compareTo(String anotherString) {        //len1:当前字符串长度        int len1 = value.length;        //len2:参数字符串长度        int len2 = anotherString.value.length;        //len1和len2两者最小值        int lim = Math.min(len1, len2);        //分别转为字符数组        char v1[] = value;        char v2[] = anotherString.value;        int k = 0;        //比较逻辑        while (k < lim) {            char c1 = v1[k];            char c2 = v2[k];            //字符不同,则返回两字符的ASCII 码的差值            if (c1 != c2) {                return c1 - c2;            }            k++;        }        //相同则返回两字符长度差值        return len1 - len2;    }

所以从上面的源码中可以看到,string中的compareTo逻辑大概可以整理为

字符串前面部分的每个字符完全一样,返回:后面两个字符串长度差;

字符串前面部分的每个字符存在不一样,返回:出现不一样的字符 ASCII 码的差值。

字符串的每个字符完全一样,返回 0;

在String内部还有个静态内部类CaseInsensitiveComparator也实现了该接口

private static class CaseInsensitiveComparator            implements Comparator<String>, java.io.Serializable{                //.................            }

该重写的接口方法是String对象的大小写不敏感比较方法

public int compare(String s1, String s2) {            int n1 = s1.length();            int n2 = s2.length();            int min = Math.min(n1, n2);            for (int i = 0; i < min; i++) {                char c1 = s1.charAt(i);                char c2 = s2.charAt(i);                //转大写                if (c1 != c2) {                    c1 = Character.toUpperCase(c1);                    c2 = Character.toUpperCase(c2);                    //还不一样则转小写                    if (c1 != c2) {                        c1 = Character.toLowerCase(c1);                        c2 = Character.toLowerCase(c2);                        //还不一样则:返回不一样字符的ASCII 码的差值。                        if (c1 != c2) {                            // No overflow because of numeric promotion                            return c1 - c2;                        }                    }                }            }            return n1 - n2;        }

感谢各位的阅读,以上就是“Java string中的compareTo方法怎么使用”的内容了,经过本文的学习后,相信大家对Java string中的compareTo方法怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java string中的compareTo方法怎么使用

本文链接: https://www.lsjlt.com/news/302259.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java string中的compareTo方法怎么使用
    这篇文章主要讲解了“Java string中的compareTo方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java string中的compareTo方法怎么使用”吧!一,j...
    99+
    2023-06-22
  • string compareto方法怎么使用
    String类的compareTo方法用于比较两个字符串的大小关系。它的使用方法如下: 语法: int compareTo(Stri...
    99+
    2023-10-25
    string
  • Java基础:string中的compareTo方法
    目录一,java.lang.Comparable 接口 二,java.util.Comparator 接口 三,聊聊string中的compareTo方法 前言: 今天看了一篇git...
    99+
    2024-04-02
  • java中compareto方法的作用
    这篇文章将为大家详细讲解有关java中compareto方法的作用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。...
    99+
    2023-06-15
  • java的compareto函数怎么使用
    在Java中,compareTo()函数是用于比较两个对象的方法,它返回一个整数值,表示两个对象的关系。要使用compareTo()...
    99+
    2023-10-20
    java
  • Java String中intern方法怎么使用
    今天小编给大家分享一下Java String中intern方法怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-06-30
  • Java main方法中的String[] args怎么使用
    这篇文章主要介绍了Java main方法中的String[] args怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java main方法中的String[] args怎么使用文章都会有所收获,下面我们...
    99+
    2023-06-27
  • java中string的使用方法是什么
    在Java中,String是一个类,用于表示字符串。String类提供了丰富的方法来处理字符串,包括以下常用方法: 创建字符串:...
    99+
    2024-04-08
    java
  • java中string的方法怎么应用
    在Java中,String类是一个常用的类,提供了许多可以对字符串进行操作的方法。下面是一些常见的String方法及其应用:1. l...
    99+
    2023-09-23
    java
  • Java中String怎么使用
    今天小编给大家分享一下Java中String怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.String概述Str...
    99+
    2023-06-29
  • Java中String类的使用方法有哪些
    这篇文章主要介绍“Java中String类的使用方法有哪些”,在日常操作中,相信很多人在Java中String类的使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中String类的使用方法...
    99+
    2023-06-25
  • Java中的String类使用方法有哪些
    今天小编给大家分享一下Java中的String类使用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。StringSt...
    99+
    2023-07-06
  • Java中String类有哪些使用方法
    这篇文章给大家分享的是有关Java中String类有哪些使用方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。StringString类:代表字符串,提供了开发中常用的字符串处理的方法,如:求字符串的长度、截取字...
    99+
    2023-06-29
  • Java中String类常用方法使用详解
    目录一、length()二、equals三、charAt()四、indexOf()五、trim()六、compareTo()七、toLowerCase()八、toUpper...
    99+
    2022-11-13
    Java String类 常用方法 Java String类 方法 Java String类
  • string在java中怎么使用
    在Java中,字符串(String)是一个类,用于表示文本数据。你可以使用字符串类型来存储和操作文本。以下是一些在Java中使用字符...
    99+
    2023-09-25
    string java
  • string怎么在java中使用
    这篇文章给大家介绍string怎么在java中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。1.创...
    99+
    2023-06-14
  • java中的indexOf()方法怎么使用
    在Java中,indexOf()方法用于查找指定字符或字符串在字符串中第一次出现的位置。它的语法如下:```javapublic i...
    99+
    2023-09-14
    java
  • java中的close方法怎么使用
    在Java中,close方法通常用于关闭资源,如文件、网络连接、数据库连接等。关闭资源是为了释放资源,防止资源泄露和系统性能问题。 ...
    99+
    2024-03-01
    java
  • java中的matches方法怎么使用
    在Java中,matches方法是用于检查字符串是否匹配指定的正则表达式的方法。它的用法如下: String str = "...
    99+
    2024-03-02
    java
  • java中的tostring方法怎么使用
    在Java中,toString()方法是Object类的一个方法,可以用于将一个对象转换成字符串表示形式。通常情况下,toStrin...
    99+
    2023-08-16
    java tostring
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作