java中的equals和equalsIgnoreCase方法和compareTo以及String类的常用方法length/getBytes/concat/charAt/indexOf...

一、java中的equals和equalsIgnoreCase方法和compareTo

        equals和equalsIgnoreCase方法用于字符串比较,compareTo之类方法用于将Number对象与方法的参数进行比较。主要是针对数值。也可以使用compareTo来按字典顺序比较两个字符串。比较而言equals的效率较高,compareTo其实就是按照编码的数值求差值,根据差值进行比较,它能确定两个String在字典顺序上的前后性,如只是想知道两个值是否一致,两个效果一样。compareTo()用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较。

boolean equals(Object anObject)
#将此字符串与指定的对象比较。
boolean equalsIgnoreCase(String anotherString)
#将此 String 与另一个 String 比较,不考虑大小写。

int compareTo(Object o)
#把这个字符串和另一个对象比较。
int compareTo(String anotherString)
#按字典顺序比较两个字符串。
#int compareToIgnoreCase(String str)
按字典顺序比较两个字符串,不考虑大小写。

1. java代码示例如下:

public class StringTest{
    public static void main(String[] args){
        //equal和equalsIgnoreCase方法
        equals();
        
        //compareto和compareToIgnoreCase方法
        compareto();
    }
    
    public static void equals(){
        System.out.println("-----------equals------------");
        String stra = "letter";
        String strb = "letter";
        String strc = "Letter";
        String strd = new String("letter");

        //java中的字符串使用==比较时比较的是引用地址
        System.out.println(strb.equals(stra));
        System.out.println(strb == stra);
        System.out.println(strd.equals(stra));
        System.out.println(strd == stra);
        System.out.println("----equalsIgnoreCase:");
        System.out.println(strc.equals(stra));
        System.out.println(strc.equalsIgnoreCase(stra));
    }
    
    public static void compareto(){
        System.out.println("-----------compareTo------------");
        
        Integer inta = 123;
        Integer intb = 128;
        System.out.println(inta.compareTo(intb));
        String stra = "123";
        String strb = "123a";
        System.out.println(stra.compareTo(strb));
        stra = "123d";
        System.out.println(stra.compareTo(strb));
        stra = "123a";
        System.out.println(stra.compareTo(strb));
        stra = "123A";
        System.out.println(stra.compareTo(strb));
        System.out.println(stra.compareToIgnoreCase(strb));    
    }
}

2. JAVA程序运行输出结果如下:

$ javac StringTest.java; java StringTest;
-----------equals------------
true
true
true
false
----equalsIgnoreCase:
false
true
-----------compareTo------------
-1
-1
3
0
-32
0

3. 其它补充说明

        在使用compareTo时发现不能使用int inta = 123;后进行比较,因为Int是整型数字,是Java的8个原始数据类型(Primitive Type:boolean、byte、short、char、int、float、double、long)之一,不具有compareTo方法。Java语言虽然号称一切都是对象,但原始数据是例外。而Integer是int对应的包装类,它有一个int类型的字段存储数据,并且提供了基本操作,比如数学运算,int和字符串之间转换等。

        另外可以发现在使用compareTo进行字符串比较和数字比较时结果意义是不一样的,比较数字只比较大小关系得出boolean结果,比较字符串会比较字符的ASCII码值最后得出差值。 

二、java的String类的常用方法length/getBytes/concat/charAt/indexOf/lastIndexOf

 Java中String类的一些常用方法:length,getBytes,concat,charAt,indexOf,lastIndexOf的使用。

1. Java中String类常用方法列表

#返回此字符串的长度。注java中string的length()取出来的是字符长度而不是字节长度,
#java程序是unicode的,按照unicode计算一个汉字就是1个字符。
int length()

#使用平台的默认字符集将String编码为byte序列,并将结果存储到一个新的 byte 数组中。
#在上述中length方法时,如果想要得到一个string的字节长度,可以使用String.getByes().length
byte[] getBytes()

#将指定字符串连接到此字符串的结尾。参数str在String的后面。
String concat(String str)

#返回指定索引处的 char 值。index从0开始
char charAt(int index)

#返回指定子字符串第一次出现在该字符串内的索引。
int indexOf (String str)
#返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
int indexOf(String str, int fromIndex)
#返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch)
#返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
int indexOf(int ch, int fromIndex)

#返回指定字符在此字符串中最后一次出现处的索引。
int lastIndexOf(int ch)
#返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
int lastIndexOf(int ch, int fromIndex)
#返回指定子字符串在此字符串中最右边出现处的索引。
int lastIndexOf(String str)
#返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
int lastIndexOf(String str, int fromIndex)

2. String类中的常用方法java代码示例:

package kermit;

import java.util.Arrays;

public class StringTest {
	public static void main(String[] args) {
		String letters = "abcEFG567一个测试567";
		//length方法:
		System.out.print("letters长度:" + letters.length());
		System.out.println(",letters字节长度:" + letters.getBytes().length);
		
		//getBytes方法:
		String b = Arrays.toString(letters.getBytes());
		System.out.println("letters字节数:" + b);
		
		//concat方法:
		String suf = ", yes.";
		String full = letters.concat(suf);
		System.out.println(full);
		
		//charAt方法:
		System.out.print("位置9是:" + letters.charAt(9));
		System.out.println(",位置16是:" + letters.charAt(15));
		
		//indexOf方法:
		System.out.println("查找567的起始位置:" + letters.indexOf("567"));
		System.out.println("查找字符串'测'的起始位置:" + letters.indexOf("测"));
		System.out.println("查找字符'测'的起始位置:" + letters.indexOf('测'));
		System.out.println("从15查找字符'测'的起始位置:" + letters.indexOf('测', 15));
		
		//lastIndexOf方法:
		System.out.println("反向查找567的起始位置:" + letters.lastIndexOf("567"));
		System.out.println("反向查找'5'的起始位置:" + letters.lastIndexOf('5'));
		System.out.println("反向查找567的起始位置:" + letters.lastIndexOf("567", 10));
	}
}

3. 上述JAVA代码运行的输出如下:

letters长度:16,letters字节长度:20
letters字节数:[97, 98, 99, 69, 70, 71, 53, 54, 55, -46, -69, -72, -10, -78, -30, -54, -44, 53, 54, 55]
abcEFG567一个测试567, yes.
位置9是:一,位置16是:7
查找567的起始位置:6
查找字符串'测'的起始位置:11
查找字符'测'的起始位置:11
从15查找字符'测'的起始位置:-1
反向查找567的起始位置:13
反向查找'5'的起始位置:13
反向查找567的起始位置:6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值