String类包括了几个用于比较字符串或字符串内子字符串的方法。下面分别对它们进行介绍。

equals( )和 equalsIgnoreCase( )

使用equals( )方法比较两个字符串是否相等。它具有如下的一般形式:

boolean equals(Object str)复制代码

这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它返回true,否则返回false。这种比较是区分大小写的。

为了执行忽略大小写的比较,可以调用equalsIgnoreCase( )方法。当比较两个字符串时,它会认为A-Z和a-z是一样的。其一般形式如下:

boolean equalsIgnoreCase(String str)复制代码

这里,str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它也返回true,否则返回false。

下面的例子说明了equals( )和equalsIgnoreCase( )方法:

// Demonstrate equals() and equalsIgnoreCase().

class equalsDemo{

public static void main(String args[]){

String s1 = "Hello";

String s2 = "Hello";

String s3 = "Good-bye";

String s4 = "HELLO";

System.out.println(s1 + " equals " + s2 + " -> " +

s1.equals(s2));

System.out.println(s1 + " equals " + s3 + " -> " +

s1.equals(s3));

System.out.println(s1 + " equals " + s4 + " -> " +

s1.equals(s4));

System.out.println(s1 + " equalsIgnoreCase " + s4 + " -> " +

s1.equalsIgnoreCase(s4));

}

}

复制代码

该程序的输出如下所示:

Hello equals Hello -> true

Hello equals Good-bye -> false

Hello equals HELLO -> false

Hello equalsIgnoreCase HELLO -> true

复制代码

regionMatches( )

regionMatches( )方法将一个字符串中指定的区间和另一字符串中指定的区间进行比较。它的重载形式允许在比较时忽略大小写。下面给出这两种方法的一般形式:

boolean regionMatches(int startIndex, String str2,

int str2StartIndex, int numChars)

boolean regionMatches(boolean ignoreCase,

int startIndex, String str2,

int str2StartIndex, int numChars)复制代码

对于这两种形式,startIndex指定了调用字符串(String)对象内区间开始的下标。用于比较的字符串(String)由str2指定的。在str2内,开始比较区间的下标由str2StartIndex指定。

用于比较的子字符串的长度在numChars中。如果ignoreCase是true,字符的大小写被忽略。否则,大小写是有意义的。

startsWith( )和endsWith( )

字符串(String)定义两个例程,它们或多或少是regionMatches( )方法的特殊形式。

startsWith( )方法判断一个给定的字符串(String)是否从一个指定的字符串开始。相反地,endsWith( )方法判断所讨论的字符(String)是否是以一个指定的字符串结尾。它们具有如下的一般形式:

boolean startsWith(String str)

boolean endsWith(String str)复制代码

这里,str是被测试的字符串(String)。如果字符串匹配,返回true。否则返回false。

例如:

"Foobar".endsWith("bar")

复制代码

"Foobar".startsWith("Foo")

复制代码

都是true。

下面给出startsWith( )方法的第二种形式。这种形式允许指定一个起始点:

boolean startsWith(String str, int startIndex)复制代码

这里,startIndex指定了调用字符串开始搜索的下标。例如,

"Foobar".startsWith("bar", 3)

复制代码

返回true。

equals( )与==的比较

理解equals( )方法和==运算符执行的是两个不同的操作是重要的。如同刚才解释的那样,equals( )方法比较字符串(String)对象中的字符。

而==运算符比较两个对象引用看它们是否引用相同的实例。下面的程序说明了两个不同的字符串(String)对象是如何能够包含相同字符的,但同时这些对象引用是不相等的:

// equals() vs ==

class EqualsNotEqualTo{

public static void main(String args[]){

String s1 = "Hello";

String s2 = new String(s1);

System.out.println(s1 + " equals " + s2 + " -> " +

s1.equals(s2));

System.out.println(s1 + " == " + s2 + " -> " + (s1 == s2));

}

}

复制代码

变量s1指向由“Hello”创建的字符串(String)实例。s2所指的的对象是以s1作为初始化而创建的。因此这两个字符串(String)对象的内容是一样的。但它们是不同的对象,这就意味着s1和s2没有指向同一的对象,因此它们是不==的,上面例子的结果如下:

Hello equals Hello -> true

Hello == Hello -> false

复制代码

compareTo( )

通常,仅仅知道两个字符串是否相同是不够的。对于排序应用来说,必须知道一个字符串是大于、等于还是小于另一个。一个字符串小于另一个指的是它在字典中先出现。而一个字符串大于另一个指的是它在字典中后出现。字符串(String)的compareTo( )方法实现了这种功能。它的一般形式如下:

int compareTo(String str)复制代码

这里str是与调用字符串(String)比较的字符串(String)。比较的结果返回并被解释如表所示:

字符串比较的结果及其含义

值含义小于0调用字符串小于str

大于0调用字符串大于str

等于0两个字符串相等

下面是一个对字符串数组进行排序的例子程序。程序中在冒泡法排序中使用compareTo( )方法确定排序的顺序:

// A bubble sort for Strings.

class SortString{

static String arr[] = {

"Now", "is", "the", "time", "for", "all", "good", "men",

"to", "come", "to", "the", "aid", "of", "their", "country"

};

public static void main(String args[]){

for(int j = 0; j < arr.length; j++) {

for(int i = j + 1; i < arr.length; i++) {

if(arr[i].compareTo(arr[j]) < 0) {

String t = arr[j];

arr[j] = arr[i];

arr[i] = t;

}

}

System.out.println(arr[j]);

}

}

}

复制代码

程序的输出是如下的单词表:

Now

aid

all

come

country

for

good

is

men

of

the

the

their

time

to

to

复制代码

正如从这个例子的输出所能看到的,compareTo( )方法区分单词的大小写。单词“Now”因为是以大写字母开始的而出现在其他单词的前面,这意味着它在ASCII字符集中具有更小的值。

如果想在比较两个字符串时,忽略大小写,可以使用如下的compareToIgnoreCase( )方法:

int compareToIgnoreCase(String str)复制代码

除了忽略大小写之外,该方法的返回值与compareTo( )方法相同。

java string 比较前几个字符_Java基础之字符串详细比较相关推荐

  1. java习题7参考练习及答案_Java基础练习题及详细答案

    本文参考 嗨客网 Java 实战 前言 本篇文章给大家安利一些关于 Java 基础的练习题,每道题都附有答案链接,答案解题的每个步骤到运行结果都十分详细,十分适合小白拿来练习,也十分适合准备面试的各位 ...

  2. 将源字符串的前count个字符拷贝到目的字符串中strncpy()

    将源字符串的前count个字符拷贝到目的字符串中 char *strncpy(char *dest, const char *src, unsigned int count) {assert((NUL ...

  3. 今天用Java开发主机IP扫描神器,零基础Socket编程详细

    目录 一.开发背景 二.准备工作 三.远程主机 IP 探测 四.核心算法 1.IP地址转化为十进制数 2.十进制数转化为IP地址 五.主机 IP 扫描神器界面 六.各功能代码及IP扫描演示 1.主机扫 ...

  4. java语言用数组接收字符_Java基础——数组应用之字符串String类

    字符串String的使用 Java字符串就是Unicode字符序列,例如串"Java"就是4个Unicode字符J,a,v,a组成的. Java中没有内置的字符串类型,而是在标准J ...

  5. java 判断 中文字符_java中判断字符串中是否有中文字符

    package com.meritit.test; public class TestChart { public static void main(String[] args) throws Exc ...

  6. groovy 字符串截取最后一个_Java基础篇——字符串详解

    字符串的声明 字符串是内存中连续排列的0个或多个字符.不变字符串是指字符串一旦创建,其内容就不能改变,Java中使用String类来处理不变字符串,在对String类的实例进行查找.比较.拼接等操作时 ...

  7. Java基础之字符串详细比较

    String类包括了几个用于比较字符串或字符串内子字符串的方法.下面分别对它们进行介绍. equals( )和 equalsIgnoreCase( ) 使用equals( )方法比较两个字符串是否相等 ...

  8. java 字符串包含某个字符_java中判断字符串中是否包含某个特定字符串的方法有哪些...

    判断一个字符串是否包含某个子串的n种方法: 1.startsWith()方法 2.contains()方法 3.indexOf方法 startsWith()方法 这个方法有两个变体,用于检测字符串是否 ...

  9. java去掉重复字符_Java实现去掉字符串重复字母的方法示例

    本文实例讲述了Java实现去掉字符串重复字母的方法.分享给大家供大家参考,具体如下: package demo; public class Ctrl { public static void main ...

最新文章

  1. 别再问我Redis内存满了该怎么办了
  2. LNMP网站并发计算
  3. [ARM-assembly]-ARMv8-A64指令集总结和学习
  4. GDI编程注意点-1
  5. Codeforces Gym 100286I iSharp 水题
  6. cdlinux miniwdep 配置无线网卡
  7. python定时刷新tkinter界面_如何在python中“刷新”Tkinter窗口?
  8. 电影与爆米花(模拟)
  9. c++exe程序在别人电脑上双击无法打开_Windows10电脑磁盘占用率过高,用这二招轻松解决...
  10. python使用蓝牙功能_python bluetooth蓝牙信息获取蓝牙设备类型的方法
  11. pthread_cancel
  12. cp oracle,Oracle ASM使用asmcmd中的cp命令来执行远程复制
  13. vsto mysql_VSTO安装部署(完美解决XP+2007)
  14. 程学旗 计算机,专家人才库数据----中国科学院计算技术研究所
  15. 查询课程数mysql_mysql_数据查询练习
  16. js打开新窗口并且不被拦截
  17. voipdiscount免费拨打全球电话(无需手机注册)
  18. 计算机开机出现ROM,求助电脑开机问题
  19. php验证码有图片没数字,php验证码图片不显示
  20. Android接入微信登陆

热门文章

  1. Android 8/9高通平台客制化虚拟导航按键隐藏
  2. php时间戳 剩余日期时间_PHP中UNIX时间戳和日期间的转换与计算实例
  3. 什么是RFC、IETF
  4. 联发科抢闸发布天玑9200还是败了,国产手机还是热捧骁龙8G2
  5. 基于FATFS的SD卡存储
  6. 领导力提升,我只推荐这一本书!
  7. [社群QA] “专家坐诊”第43期问答汇总
  8. WAR3 兵种克制详解
  9. 扒一扒毕业5年后各行业及职能的薪酬
  10. 计算机桌面字体调大,桌面字体怎么设置-调整电脑字体大小的方法教程