<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. java語言

    Java面試實例用最有效率的方法計算2乘以8

    時間:2025-04-22 15:04:35 java語言 我要投稿
    • 相關推薦

    Java面試實例用最有效率的方法計算2乘以8

      引導語:在面試Java程序員時,筆試是很關鍵的一關,以下是百分網小編分享給大家的Java面試實例用最有效率的方法計算2乘以8。歡迎閱讀參考!

    Java面試實例用最有效率的方法計算2乘以8

      用最有效率的方法計算2乘以8。

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

      補充:我們為編寫的類重寫hashCode方法時,可能會看到如下所示的代碼,其實我們不太理解為什么要使用這樣的乘法運算來產生哈希碼(散列碼),而且為什么這個數是個素數,為什么通常選擇31這個數?前兩個問題的答案你可以自己百度一下,選擇31是因為可以用移位和減法運算來代替乘法,從而得到更好的性能。說到這里你可能已經想到了:31 * num 等價于(num << 5) – num,左移5位相當于乘以2的5次方再減去自身就相當于乘以31,現在的VM都能自動完成這個優化。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public class PhoneNumber {
        private int areaCode;
        private String prefix;
        private String lineNumber;
     
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + areaCode;
            result = prime * result
                    + ((lineNumber == null) ? 0 : lineNumber.hashCode());
            result = prime * result + ((prefix == null) ? 0 : prefix.hashCode());
            return result;
        }
     
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            PhoneNumber other = (PhoneNumber) obj;
            if (areaCode != other.areaCode)
                return false;
            if (lineNumber == null) {
                if (other.lineNumber != null)
                    return false;
            } else if (!lineNumber.equals(other.lineNumber))
                return false;
            if (prefix == null) {
                if (other.prefix != null)
                    return false;
            } else if (!prefix.equals(other.prefix))
                return false;
            return true;
        }
     
    }

    【Java面試實例用最有效率的方法計算2乘以8】相關文章:

    java動態方法調度實例04-26

    java計算器綜合實例學習教程01-21

    用java重載的方法01-07

    Java中的== 和equals()方法詳解與實例教程08-03

    Java實例化的四種方法介紹03-12

    用JAVA編寫一個隊列類實例05-25

    用AxureRP做實例原型設計的方法04-21

    Java鍵盤輸入實例07-06

    Java for循環語句使用實例01-13

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人