1.java中while()语句:为什么不能用a==b ,源码却可以用a.equals(b)?!源码!源码!源码
2.java:判断两个输入变量是源码扯旋开发源码否相等,如不相等则比较它们的源码代码照片墙源码大小。return可以放在三目运算式里吗?
java中while()语句:为什么不能用a==b ,源码却可以用a.equals(b)?!源码!源码!源码
呵呵,源码这是源码一个JAVA基础问题,“==”如果用来比较基本类型,源码文华超短指标源码如int、源码float、源码boolean类型的时候,是vue静态页面源码比较值,而在比较其它类的时候,都是比较类对象的内存地址,就如你现在这种情况。
answer是老兵溯源码燕窝一个String对象,“y”也是一个Stirng对象,虽然它们的值一样,但是他们的内存地址是不同的,所以输出结果是false。
而你调用String对象的equals方法,它会按该String对象的值进行比较,所以返回就是true了,你要是感兴趣的话你可以看一下String对象的equals方法的源代码,它重载Object对象的equals方法。
java:判断两个输入变量是否相等,如不相等则比较它们的大小。return可以放在三目运算式里吗?
可以的‘具体可以如下操作:判断两个变量是否相等的方式有两种:利用运算符 ==
利用equals方法
(1)比较基本Java基本数据类型
比较基本数据类型,只能用“==”,不能用equals,这里比较的是两个变量的值;
(2)比较包装类
比较包装类,举个例子
1
2
3
4
5
6
7
8
9Integer i1 = new Integer();
Integer i2 = new Integer();
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));
执行结果:
false
true
如上例子可知,“==”比较的是两个变量的内存地址值,equals比较的是两个具体要看当前这个类的equals方法
查看Integer的equals的源码1
2
3
4
5
6public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
return false;
可知比较的是两个变量的intValue;
或者int a,b
int max = a>b?a:b;
System.out.println(max);
==是运算符,用于比较两个变量是否相等,对于基本类型而言比较的是变量的值,对于对象类型而言比较的是对象的地址.
equals()是Object类的方法,用于比较两个对象内容是否相等.默认Object类的equals()实现如下:
不难看出此时equals()是比较两个对象的地址,此时直接==比较的的结果一样.对于可能用于集合存储中的对象元素而言,通常需要重写其equals()方法.