简谈Java语言中的"=="与equals方法应用的区别。
public class StringDemo03 {
public static void main(String[] args) {
//构造方法得到对象
char[] chs = {'a', 'b', 'c'};
String s1 = new String(chs);
String s2 = new String(chs);
//直接赋值得到对象
String s3 = "abc";
String s4 = "abc";
//比较字符串对象地址是否相同
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
1:我们知道"“运算符是关系运算符的一种。
其结果均为布尔常量的结果——true or false;
2:使用”"作比较时,通常是两种情况:对于基本类型比较的则是数据值是否相同;对于引用类型比较的则是地址值是否相同。
由此,在此例中
String s1 = new String(chs);
String s2 = new String(chs);
由于定义了s1、s2两个不同的变量,所以开辟了地址值是不同的,故运行出来的结果是false
false
对于s3、s4则是直接赋值的两个相同内容是放在堆内存中的,并没有开发新的内存空间,所以地址是一样的,故运行出来的结果是true。