public class ImmutableStringDemo {
public static void main(String[] args) {
String emperorName = "刘邦";;
System.out.println(emperorName);
//字符串常量池
String hanEmperor="刘邦";
if(emperorName == hanEmperor) {
System.out.println("hanEmperor 与 emperorName 所指向的对象是同一个");
}else {
System.out.println("hanEmperor 与 emperorName 所指向的对象不是同一个");
}
//使用new String() 创建的对象不在常量池
String liuBang = new String("刘邦");
if(liuBang == hanEmperor) {
System.out.println("liuBang 与 emperorName 所指向的对象是同一个");
}else {
System.out.println("liuBang 与 emperorName 所指向的对象不是同一个");
}
System.out.println("++++++++++演示 == 与 equals() 的区别+++++++++++++");
if(liuBang.equals(hanEmperor)) {
System.out.println("liuBang 与 emperorName 所指向的对象内容相同");
}else {
System.out.println("liuBang 与 emperorName 所指向的对象内容不同");
}
}
}
在Java中,==和equals()有以下主要区别:
1. == 是一个比较运算符,equals() 是一个方法。== 可以用于比较基本数据类型和引用类型,而 equals() 只能用于比较对象。
2. 对于基本数据类型,== 比较的是它们的值是否相等。对于引用类型,== 比较的是它们是否指向同一个对象(即比较的是内存地址)。
3. equals() 方法用于比较两个对象的内容是否相等。在默认情况下(即在 Object 类中),equals() 和 == 的行为是相同的,它们都是比较对象的内存地址。但是,许多类(如 String,Date,Integer 等)都重写了 equals() 方法,使其比较的是对象的内容而不是内存地址。
文章评论