==是关系运算符,equals()是方法,返回的都是布尔值。
Object的==和equals()比较的都是地址,作用相同。
== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重新了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。
equals源码
//equals 本质上就是 ==,String、Integer重写了 Object 的 equals 方法,把引用比较改成了值比较。
public boolean equals(Object obj) {return (this == obj);
}
String x = “string”;
String y = “string”;
String z = new String(“string”);
System.out.println(x == y); // true因为x和y指向同一个地址
System.out.println(x == z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
if-else-if-else:
- 适合分支较少
- 判断条件不单一
switch
- 适合较多分支
- 适合判断条件类型单一
- JDK1.7之前仅支持int和enum,JDK1.7之后多了支持String。但是企业开发中大部分用enum
- 没有break语句,每个分支都会执行
Java5 以前 switch(expr)中,expr 只能是 byte、short、char、int。
Java 5开始,Java中引入了枚举型,expr也可以是 enum类型。
ava 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
例如:某种判断有两个步骤,先去a表查指定数据,有数据(返回true)就进入下一步,没有数据就需要去b表查询是否有数据,有数据(返回true)就进行下一步。(a||b)

2 <<3 CPU 直接支持位运算,效率最高
位运算符 <<,是将一个数左移 n 位,相当于乘以了 2 的 n 次方
一个数乘以 8 只要将其左移 3 位即可
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5
然后进行取整。