加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

史上最全Java面试题整理(附参考答案)

发布时间:2020-12-24 11:32:57 所属栏目:交互 来源:网络整理
导读:下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长 1、面向对象的特征有哪些方面? 抽象:将同类对象的共同特征提取出来构造类。 继承:基于基类创建新类。 封装:将数据

答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

12、用最有效率的方法计算2乘以8?

答: 2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。

补充:我们为编写的类重写hashCode方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择31这个数?前两个问题的答案你可以自己百度一下,选择31是因为可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能已经想到了:31 * num 等价于(num << 5) - num,左移5位相当于乘以2的5次方再减去自身就相当于乘以31,现在的VM都能自动完成这个优化。

<span class="hljs-meta"&gt;@Override <span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public <span class="hljs-keyword"&gt;int <span class="hljs-title"&gt;hashCode<span class="hljs-params"&gt;() { <span class="hljs-keyword"&gt;final <span class="hljs-keyword"&gt;int prime = <span class="hljs-number"&gt;31; <span class="hljs-keyword"&gt;int result = <span class="hljs-number"&gt;1; result = prime * result + areaCode; result = prime * result + ((lineNumber == <span class="hljs-keyword"&gt;null) ? <span class="hljs-number"&gt;0 : lineNumber.hashCode()); result = prime * result + ((prefix == <span class="hljs-keyword"&gt;null) ? <span class="hljs-number"&gt;0 : prefix.hashCode()); <span class="hljs-keyword"&gt;return result; } <span class="hljs-meta"&gt;@Override <span class="hljs-function"&gt;<span class="hljs-keyword"&gt;public <span class="hljs-keyword"&gt;boolean <span class="hljs-title"&gt;equals<span class="hljs-params"&gt;(Object obj) { <span class="hljs-keyword"&gt;if (<span class="hljs-keyword"&gt;this == obj) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;true; <span class="hljs-keyword"&gt;if (obj == <span class="hljs-keyword"&gt;null) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; <span class="hljs-keyword"&gt;if (getClass() != obj.getClass()) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; PhoneNumber other = (PhoneNumber) obj; <span class="hljs-keyword"&gt;if (areaCode != other.areaCode) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; <span class="hljs-keyword"&gt;if (lineNumber == <span class="hljs-keyword"&gt;null) { <span class="hljs-keyword"&gt;if (other.lineNumber != <span class="hljs-keyword"&gt;null) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; } <span class="hljs-keyword"&gt;else <span class="hljs-keyword"&gt;if (!lineNumber.equals(other.lineNumber)) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; <span class="hljs-keyword"&gt;if (prefix == <span class="hljs-keyword"&gt;null) { <span class="hljs-keyword"&gt;if (other.prefix != <span class="hljs-keyword"&gt;null) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; } <span class="hljs-keyword"&gt;else <span class="hljs-keyword"&gt;if (!prefix.equals(other.prefix)) <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;false; <span class="hljs-keyword"&gt;return <span class="hljs-keyword"&gt;true; }

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读