1)a = a + b 与 a += b 的区别

    += 隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作

                        java基础面试

  (因为 a+b 操作会将 a、b 提升为 int 类型,所以将 int 类型赋值给 byte 就会编译出错)

 2)3*0.1 == 0.3 将会返回什么?true 还是 false? 

    false,因为有些浮点数不能完全精确的表示出来

3)“a==b”和”a.equals(b)”有什么区别?

    如果 a 和 b 都是对象:则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true,

    如果 a 和 b 都是数值型: 比较的则是数值是否相等

       a.equals(b) :是进行逻辑比较(内容的比较),所以通常需要重写该方法来提供逻辑一致性的比较。例如,String 类重写 equals() 方法,所以可以用于两个不同对象,但是包含的字母相同的比较。

== 和 equals 的区别是什么?   

  == 解读

    对于基本类型和引用类型 == 的作用效果是不同的,如下所示:

      • 基本类型:比较的是值是否相同;
      • 引用类型:比较的是引用是否相同;
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true 

    代码解读:因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

  equals 解读(内容的比较)

    equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较
    首先来看默认情况下 equals 比较一个有相同值的对象,代码如下

class Cat {
    public Cat(String name) {
        this.name = name;
    }
 
    private String name;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
 
Cat c1 = new Cat("王磊");
Cat c2 = new Cat("王磊");
System.out.println(c1.equals(c2)); // false
View Code

相关文章:

  • 2022-12-23
  • 2021-08-09
  • 2021-12-03
  • 2021-11-17
猜你喜欢
  • 2021-12-25
  • 2021-10-04
  • 2021-11-05
  • 2021-07-09
  • 2022-01-11
  • 2021-07-25
  • 2021-06-08
相关资源
相似解决方案