使用==来判断两个变量是否相等时,如果两个变量时基本数据类型,且都是数值型的,只要两个数值相等,==就返回true;
但对于两个引用类型的变量,必须它们指向同一个对象,==才返回true,示例代码中先创建了一个字符串变量a,并且在常量池中创建了abc这个对象,使a指向“abc”;
随后又创建字符串b,内存中已经存在abc,为了不浪费内存空间,b和a使用同一个字符串,所以a和b都指向同一个对象,结果返回true;
对于第一道程序而言,System.out.println("====>"+a==b);因为“====>”也是一个字符串,由于“+“运算符优先级高于”==“,所以括号里的执行顺序是:
1,”====>“+abc ——>"====>abc"; 2,"====>abc"==abc;3,返回false
若要判断成true,改为System.out.println("====>"+(a==b)); 改变运算顺序 |