一、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