严格来说,==始终是比较内容的。
在很多教材上,都说==比较的是内存地址,其实这容易误导。
如:String st1=new String("java");
String st2=new String("java");
在Java中,对象的名称,实际上是一个引用。引用即内存地址。所以对象名里保存的是地址。上面两句代码,可以理解为,String st1=new String("java")这里st1保存的是new的那块内存地址,而st2就是另一块内存地址了,所以用st1==st2得到的为假。
而==呢,是你两边存的是什么,它就比较什么,所以严格来说==比较的仍然是内容。
当然对于int这些基本数据,当然还是比较内容。
虽然Java没有指针,但我们却能感受到指针的影子。
byte short char int float double 这是原生数据类型, 存储直接是值, 不存地址, 所以==比较的是两个值,
int 数据 a==b判断相等 String 是 a.equals(b);
整数是值 。