【JAVA|java String对象中‘==’,equals与compareTo函数的使用和区别】java String类中可能最让初学者容易混淆的两个东西就是"==“,与"equals"的区别了,因为他们都是用来比较字符串的,那么它们有什么区别呢,下面简单谈谈这两者的区别:
”equals“: 比较的是两个字符串字面上每个字符是否相同,即按字符一一比较。例如:a="1243", b="1243",那么a.equals(b)就会返回TRUE,因为a和b两个字符串中的每一个字符都相同,如果对a或者b中的任何一个做任何修改,equals()都会返回false。
”==":比较的是两个字符串是否引用了同一个字符串对象,如果 a=new String("abc");
b=a;
b引用的a,所以a == b的比较就会返回TRUE。
compareTo(): 这个函数的作用就是对两个字符串按字典排序的方式进行比较,返回两个字符串中第一个不同的字符的ascII码差值。
下面有程序代码看看测试结果:
public class equals_compareTo {
public static void main(String[] args) {
String a = "abcd";
String b = "abcd";
String c = new String("abcd");
String d = new String("abcd");
String e = c;
String f = "absd";
System.out.println("a.equals(b): " + a.equals(b));
//a和b在字面上的每个字母都是相同的,所以返回TRUE
System.out.println("b.equals(c): " + b.equals(c));
//c和b在字面上的每个字母都是相同的,所以返回TRUESystem.out.println("a == b: " + (a == b));
//此处为什么会返回TRUE呢,原因是我们先定义了a="abcd",当我们再次定义b="abcd"是,系统检测到已经在内存中存在了相同的"abcd",所以b会直接引用已有的"abcd"System.out.println("a == c: " + (a == c));
//a和c不是引用的同一个对象,所以false
System.out.println("a == f: " + (c == d));
//d和c不是引用的同一个对象,所以falseSystem.out.println("c == e: " + (c == e));
//e引用c,所以比较会返回trueSystem.out.println("f.compareTo(c): " + f.compareTo(c));
//比价结果是16,即第一个不同的字母s与c的ascII码差值
System.out.println("a.compareTo(c): " + a.compareTo(c));
//ac值相同,返回0
}
}
程序的运行结果如下:
a.equals(b): true
b.equals(c): true
a == b: true
a == c: false
a == f: false
c == e: true
f.compareTo(c): 16
a.compareTo(c): 0
推荐阅读
- java|ArrayList与Vector扩容机制分析
- 哈希算法|HashMap插入元素方法剖析(java8)
- java|SSM整合
- java|Java并发编程—生产者消费者Java实现
- java|快速失败与安全失败
- java|Java并发编程—ThreadLocalRandom类
- Java知识点|Java判定相等---==和equals()和“compareTo()”
- ITI 1121 体系计算
- 被 P8 大佬面试的 2 小时,面试全过程记录..