java Se面试题
1.1 重载和重写的区别
重载: 发生在同一个类中,方法名相同,参数类型不同,个数不同,顺序不同,与返回值无关,发生在编译时期。
重写: 发生在父子类中,方法名,参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问的修饰符大于等于父类;如果父类方法被private所修饰,则子类不可以重写该方法。
1.2 & 和 && 的区别?
&运算符有两种用法:
按位与;
逻辑与。
&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左
右两端的布尔值都是 true 整个表达式的值才是 true。
&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直
接短路掉,不会进行 运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录
时判定用户名不是 null 而且不是空字符串,应当写为
username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,
因为第一个条件如果不成立,根本不能进行字符串的 equals 比较,否则会产生
NullPointerException 异常。
注意:逻辑或运算符(|) 和短路或运算符(||)的差别也是如此