方法原型为int compareTo(String str),返回值为int型,参数为字符串类型。

下面是简单示例:

/*
* compareTo()返回参与比较的两个字符串的ascii码差值
* Object类....
*/
package packagetest;
public class StringCompareEmp{
public void printCompare() {
// public static void main(String[] args) {
// int indexI = 3;
// String firststr = "This String";
// String secondstr = "this string";
// Object objstr = firststr; String str1 = "a";
String str2 = "b";
String str3 = "abc";
String str4 = "ab";
String str5 = "abcde";
// String str6 = "a";
String str7 = "abb";
String str8 = "ae";
// String str9 = "c";
String str10 = "abcd";
String str11 = "abea";
String str12 = "cde"; // System.out.println( firststr + " 第" + (indexI+1) + "个字符是:" + firststr.charAt(indexI) );//char charAt(int)
// System.out.println( firststr + " 与 " + secondstr + " 按字典顺序比较,结果为:" + firststr.compareTo(secondstr) );//int compareTo(String),按字典顺序比较两个字符串
// System.out.println( firststr + " 与 " + secondstr + " 按字典顺序比较并且不考虑大小写,结果为:" + firststr.compareToIgnoreCase(secondstr) );//int compareToIgnoreCase(String),按字典顺序比较两个字符串,不考虑大小写
// System.out.println( firststr + " 与 " + objstr + " 比较,结果为:" + firststr.compareTo(objstr.toString()) );//int compareTo(Object),把字符串与另一个对象比较 // 两个字符串首字母不同,则返回首字母的ascii差值
System.out.println( "两个字符串首字母不同,则返回首字母的ascii差值:" );
System.out.println( str1 + " 与 " + str2 + " 按字典顺序比较,结果为: " + str1.compareTo(str2) );
System.out.println( str4 + " 与 " + str2 + " 按字典顺序比较,结果为: " + str4.compareTo(str2) );
System.out.println( str5 + " 与 " + str2 + " 按字典顺序比较,结果为: " + str5.compareTo(str2) );
System.out.println( str1 + " 与 " + str12 + " 按字典顺序比较,结果为: " + str1.compareTo(str12) );
System.out.println( str4 + " 与 " + str12 + " 按字典顺序比较,结果为: " + str4.compareTo(str12) );
System.out.println( str5 + " 与 " + str12 + " 按字典顺序比较,结果为: " + str5.compareTo(str12) );
System.out.println("\n");
//两个字符串相同时,返回0
// System.out.println("两个字符串相同,返回0:"); //首字母相同,则比较下一个字符,直到有不同的为止或比较到字符串最后一个字符,返回该不同的字符的ascii差值;如果两字符串长度不同,可以参与比较的字符又完全一样,返回两个字符串的长度差值
// System.out.println( "首字母相同,则比较下一个字符,直到有不同的为止或比较到字符串最后一个字符,返回该不同的字符的ascii差值;如果两字符串长度不同,可以参与比较的字符又完全一样,返回两个字符串的长度差值:" );
System.out.println("首字母相同,则比较下一个字符,直到有不同的为止,返回此两个不同字符的ascii差值。");
System.out.println( str10 + " 与 " + str11 + " 按字典顺序比较,结果为: " + str10.compareTo(str11) );
System.out.println( str10 + " 与 " + str7 + " 按字典顺序比较,结果为: " + str10.compareTo(str7) );
System.out.println( str11 + " 与 " + str3 + " 按字典顺序比较,结果为: " + str11.compareTo(str3) );
System.out.println("\n"); System.out.println("如果恰好是最后一个字符不同,则返回最后一个字符的ascii差值:");
System.out.println( str3 + " 与 " + str7 + " 按字典顺序比较,结果为: " + str3.compareTo(str7) );
System.out.println( str4 + " 与 " + str8 + " 按字典顺序比较,结果为: " + str4.compareTo(str8) );
System.out.println("\n"); System.out.println("特殊情况下,最后一个字符也相同,则两字符串相同,返回最后一个字符的ascii差值,即返回0:");
System.out.println( str1 + " 与 " + str1 + " 按字典顺序比较,结果为: " + str1.compareTo(str1) );
System.out.println( str4 + " 与 " + str4 + " 按字典顺序比较,结果为: " + str4.compareTo(str4) );
System.out.println( str5 + " 与 " + str5 + " 按字典顺序比较,结果为: " + str5.compareTo(str5) );
System.out.println("\n"); System.out.println("如果其中一个字符串比较到最后一个字符了,另一个字符串还有其他未比较字符,则返回两字符串长度的差值:");
System.out.println( str4 + " 与 " + str1 + " 按字典顺序比较,结果为: " + str4.compareTo(str1) );
System.out.println( str3 + " 与 " + str1 + " 按字典顺序比较,结果为: " + str3.compareTo(str1) );
System.out.println( str3 + " 与 " + str4 + " 按字典顺序比较,结果为: " + str3.compareTo(str4) ); System.out.println( str5 + " 与 " + str1 + " 按字典顺序比较,结果为: " + str5.compareTo(str1) );
System.out.println( str5 + " 与 " + str4 + " 按字典顺序比较,结果为: " + str5.compareTo(str4) );
System.out.println( str5 + " 与 " + str3 + " 按字典顺序比较,结果为: " + str5.compareTo(str3) );
System.out.println( str3 + " 与 " + str5 + " 按字典顺序比较,结果为: " + str3.compareTo(str5) ); }
}

运行结果如下:

两个字符串首字母不同,则返回首字母的ascii差值:

a 与 b 按字典顺序比较,结果为: -1

ab 与 b 按字典顺序比较,结果为: -1

abcde 与 b 按字典顺序比较,结果为: -1

a 与 cde 按字典顺序比较,结果为: -2

ab 与 cde 按字典顺序比较,结果为: -2

abcde 与 cde 按字典顺序比较,结果为: -2

首字母相同,则比较下一个字符,直到有不同的为止,返回此两个不同字符的ascii差值。

abcd 与 abea 按字典顺序比较,结果为: -2

abcd 与 abb 按字典顺序比较,结果为: 1

abea 与 abc 按字典顺序比较,结果为: 2

如果恰好是最后一个字符不同,则返回最后一个字符的ascii差值:

abc 与 abb 按字典顺序比较,结果为: 1

ab 与 ae 按字典顺序比较,结果为: -3

特殊情况下,最后一个字符也相同,则两字符串相同,返回最后一个字符的ascii差值,即返回0:

a 与 a 按字典顺序比较,结果为: 0

ab 与 ab 按字典顺序比较,结果为: 0

abcde 与 abcde 按字典顺序比较,结果为: 0

如果其中一个字符串比较到最后一个字符了,另一个字符串还有其他未比较字符,则返回两字符串长度的差值:

ab 与 a 按字典顺序比较,结果为: 1

abc 与 a 按字典顺序比较,结果为: 2

abc 与 ab 按字典顺序比较,结果为: 1

abcde 与 a 按字典顺序比较,结果为: 4

abcde 与 ab 按字典顺序比较,结果为: 3

abcde 与 abc 按字典顺序比较,结果为: 2

abc 与 abcde 按字典顺序比较,结果为: -2

test

总结:

两字符串首字母不同则返回首字母的ascii差值;

首字母相同,则比较下一位,直到有不同的字符为止,返回此两个不同字符的ascii差值;

如果恰好是最后一个字符不同,则返回最后一个字符的ascii差值;

特殊情况下,最后一个字符也相同,则两个字符串相同,返回最后一个字符的ascii差值,也就是0;

如果一个字符串比较到最后一个字符了,另一个字符串还有其他未比较字符,则返回此两个字符串长度的差值。

Java学习笔记6---字符串比较方法compareTo(String str)的更多相关文章

  1. Java学习笔记之字符串常用方法

    一.String关键字一些常用方法 1.构造方法: public String(); 空构造 public String(byte[]  bytes);将字节数组转成字符串 public String ...

  2. 【原】Java学习笔记022 - 字符串

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 字符串 // 定义 ...

  3. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  4. 【原】Java学习笔记023 - 字符串缓冲区_正则表达式

    package cn.temptation; import java.util.Arrays; public class Sample01 { public static void main(Stri ...

  5. Java学习笔记——内部类及其调用方法

    一.static内部类的static方法 public class Test0719_Inner_Test { public static void main(String[] args) { //s ...

  6. 0040 Java学习笔记-多线程-线程run()方法中的异常

    run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...

  7. 1.8(java学习笔记)继承与方法的重写

    继承 在java中可以通过继承提高代码的复用率. 例如A继承了B,就可以是 例如,首先有一个类似Person,这个类中有有一些属性和方法,我们再新建一个Student类,其中有一部分属性和方法与Per ...

  8. Java学习笔记(六)——方法

    一.方法定义 1.语法: 其中: (1) 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.private 甚至可以省略 ,其中 public 表示该方法可以被其他任何 ...

  9. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递

    方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调 ...

随机推荐

  1. 【Win 10 应用开发】MIDI 音乐合成——音符消息篇

    在上一篇中,老周介绍了一些乐理知识,有了那些常识后,进行 MIDI 编程就简单得多了.尽管微软已经把 API 封装好,用起来也很简单,但是,如果你没有相应的音乐知识基础,你是无法进行 MIDI 编程的 ...

  2. Linux转发性能评估与优化(转发瓶颈分析与解决方式)

    线速问题 非常多人对这个线速概念存在误解. 觉得所谓线速能力就是路由器/交换机就像一根网线一样. 而这,是不可能的.应该考虑到的一个概念就是延迟. 数据包进入路由器或者交换机,存在一个核心延迟操作,这 ...

  3. 算法题:A除以B

    题目描写叙述 本题要求计算A/B.当中A是不超过1000位的正整数,B是1位正整数.你须要输出商数Q和余数R,使得A = B * Q + R成立. 输入描写叙述: 输入在1行中依次给出A和B,中间以1 ...

  4. 九、 Spring Boot 拦截器

    过滤器属于Servlet范畴的API,与spring 没什么关系. Web开发中,我们除了使用 Filter 来过滤请web求外,还可以使用Spring提供的HandlerInterceptor(拦截 ...

  5. 以KeyValue形式构建Lua Table

    Key为字符串 -- 定义一个key,value形式的table local kv = {fruit = "apple", bread = "french", ...

  6. CS:APP3e 深入理解计算机系统_3e Y86-64模拟器指南

    详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...

  7. 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)

    一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 ...

  8. iOS SDAutoLayout图文混排-共享

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #526eda } span.s1 { color: #4dbf5 ...

  9. ABP .Net Core API和Angular前端APP独立部署跨域问题(No Access-Control-Allow-Origin)

    前言: 通过ABP官网(https://aspnetboilerplate.com)下载ASP.NET Core 2.x + Angular模板项目是按ReStful风格架构Web API和angul ...

  10. sublime学习笔记

    学习课程地址:快乐的sublime编辑器_sublime编辑器使用 另可参考笔记地址:http://c.haoduoshipin.com/happysublime/ PS:博主的一些文章地址:http ...