`

Java String hashCode arithmetic

阅读更多
 /** Cache the hash code for the string */
    private int hash; // Default to 0

 /** The offset is the first index of the storage that is used. */
    private final int offset;

/** The count is the number of characters in the String. */
    private final int count;

 /** The value is used for character storage. */
    private final char value[];
/**
     * Returns a hash code for this string. The hash code for a
     * <code>String</code> object is computed as
     * <blockquote><pre>
     * s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
     * </pre></blockquote>
     * using <code>int</code> arithmetic, where <code>s[i]</code> is the
     * <i>i</i>th character of the string, <code>n</code> is the length of
     * the string, and <code>^</code> indicates exponentiation.
     * (The hash value of the empty string is zero.)
     *
     * @return  a hash code value for this object.
     */
    public int hashCode() {
	int h = hash;
	if (h == 0) {
	    int off = offset;
	    char val[] = value;
	    int len = count;

            for (int i = 0; i < len; i++) {
                h = 31*h + val[off++];
            }
            hash = h;
        }
        return h;
    }
分享到:
评论

相关推荐

    java常用代码

    17.SetAndList.java set的简单操作极其hashcode应用 18.Singleton.java java设计模式之单例模式 19.Factory.java 设计模式之工厂模式 20.Swing.java 介绍了java的图形应用 --课程包括了java SE的大部分常用类...

    java.lang包

    `Object`类是所有Java类的最终超类,包含所有对象共有的属性和方法,如`equals()`比较两个对象是否相等,`hashCode()`返回对象的哈希码,`toString()`返回对象的字符串表示。 通过理解并熟练使用`java.lang`包中的...

    Java Interview Questions for 5 years Experience.pdf

    在Java中,除以零将抛出ArithmeticException异常。 15. 方法重写和异常处理 在Java中,方法重写可以抛出RuntimeException,而不是NullPointerException。这是因为RuntimeException是unchecked exception,可以被...

    java-专业】最全-JAVA面试题

    1. **继承String类**:String类在Java中被声明为final,这意味着它不能被继承。 2. **构造器重写**:构造器不能被重写(Overriding),但可以被重载(Overloading),即可以有多个具有不同参数列表的构造器。 3. **...

    Java常见面试题及答案汇总,2022年最新版

    RuntimeException是未检查异常,如NullPointerException、ArithmeticException等,它们不需要在方法签名中声明,而Checked Exception需要显式处理。 `hashCode()`方法主要用于哈希表(如HashMap)中快速定位元素,...

    Java基础学习15.pdf

    4. Java中的常见API使用,例如Object类的equals、toString、clone、finalize、hashcode、getClass、notify、notifyAll、wait等方法的使用。这些方法都是在Java面向对象编程中常用的。 5. 大数值运算,提到了...

    JAVA程序员面试32问,你能回答多少题

    在Java中,`String`对象是不可变的,这意味着一旦创建了一个`String`对象,它的值就不能被更改。 - 当使用`new String("xyz")`创建字符串时,实际上创建了一个新的`String`对象,并且这个对象存储在堆内存中。 ####...

    新手必看的java经典面试题

    - 常见的运行时异常包括:`ArithmeticException`、`ArrayStoreException`、`ClassCastException`等。 #### 15. `Error` 与 `Exception` 的区别 - **`Error`**:表示严重的问题,一般是指JVM无法解决的问题。 - **`...

    JAVA变态面试32问

    - `String`类在Java中是不可变的,这意味着一旦创建了一个字符串对象,它的值就不能被改变。这种特性使得`String`非常适合用于并发环境。 - `new String("xyz")`会创建一个新的字符串对象,但字符串池中已经有"xyz...

    java面试题大全-基础方面

    常见的`RuntimeException`子类包括`ArithmeticException`、`ArrayStoreException`、`BufferOverflowException`等。 #### 15. 错误(`Error`)与异常(`Exception`) - **`Error`**:表示严重的问题,通常是JVM本身...

    Java面试试题集锦

    在Java 14之后,switch可以用于字符串(String)。 32. **Singleton设计模式**:确保一个类只有一个实例,通常使用私有构造器、静态工厂方法和一个私有的类级静态变量来实现。 以上内容涵盖了Java语言中的一些关键...

    Java面试宝典2012版

    在Java中,`new String("xyz")` 实际上创建了两个对象:一个字符串常量 `"xyz"` 在字符串常量池中,另一个是通过`new`关键字创建的`String`对象。这是因为`String`类是不可变的,所以每次使用`new`都会创建一个新的...

    常考的java面试题

    13. **`Set`集合去重机制**: `Set`利用`equals()`和`hashCode()`方法来确定元素的唯一性,`equals()`用于比较元素的值是否相等,而`hashCode()`则用于提高查找效率。 14. **常见的运行时异常**: 如`Arithmetic...

    2012年3月全国计算机等级模拟考试二级java试题及参考答案参考.pdf

    19. 子类覆盖hashCode()方法:当子类覆盖Object类的hashCode()方法时,通常应保持一致的行为,即返回与当前对象等价的哈希码。 这些知识点涵盖了数据结构、软件工程、数据库理论、Java编程基础、面向对象编程等多个...

    java面试精选必备题集

    + ArithmeticException + IllegalArgumentException * int和Integer的区别 + int:基本数据类型,整数值 + Integer:包装类,装箱和拆箱 * 包装类、装箱和拆箱 + 包装类:Integer、Long、Float等 + 装箱:基本...

    请不要忽视这些java基础知识.txt

    - 创建String对象时,如果字符串已经存在于常量池中,则不会创建新的对象,而是返回已存在的引用,这是Java中字符串不可变性带来的优化。 ### 8. 数学函数Math.round()的行为 - Math.round()用于四舍五入取整,但...

Global site tag (gtag.js) - Google Analytics