<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            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

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看