/** 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;
}
分享到:
相关推荐
17.SetAndList.java set的简单操作极其hashcode应用 18.Singleton.java java设计模式之单例模式 19.Factory.java 设计模式之工厂模式 20.Swing.java 介绍了java的图形应用 --课程包括了java SE的大部分常用类...
`Object`类是所有Java类的最终超类,包含所有对象共有的属性和方法,如`equals()`比较两个对象是否相等,`hashCode()`返回对象的哈希码,`toString()`返回对象的字符串表示。 通过理解并熟练使用`java.lang`包中的...
在Java中,除以零将抛出ArithmeticException异常。 15. 方法重写和异常处理 在Java中,方法重写可以抛出RuntimeException,而不是NullPointerException。这是因为RuntimeException是unchecked exception,可以被...
1. **继承String类**:String类在Java中被声明为final,这意味着它不能被继承。 2. **构造器重写**:构造器不能被重写(Overriding),但可以被重载(Overloading),即可以有多个具有不同参数列表的构造器。 3. **...
RuntimeException是未检查异常,如NullPointerException、ArithmeticException等,它们不需要在方法签名中声明,而Checked Exception需要显式处理。 `hashCode()`方法主要用于哈希表(如HashMap)中快速定位元素,...
4. Java中的常见API使用,例如Object类的equals、toString、clone、finalize、hashcode、getClass、notify、notifyAll、wait等方法的使用。这些方法都是在Java面向对象编程中常用的。 5. 大数值运算,提到了...
在Java中,`String`对象是不可变的,这意味着一旦创建了一个`String`对象,它的值就不能被更改。 - 当使用`new String("xyz")`创建字符串时,实际上创建了一个新的`String`对象,并且这个对象存储在堆内存中。 ####...
- 常见的运行时异常包括:`ArithmeticException`、`ArrayStoreException`、`ClassCastException`等。 #### 15. `Error` 与 `Exception` 的区别 - **`Error`**:表示严重的问题,一般是指JVM无法解决的问题。 - **`...
- `String`类在Java中是不可变的,这意味着一旦创建了一个字符串对象,它的值就不能被改变。这种特性使得`String`非常适合用于并发环境。 - `new String("xyz")`会创建一个新的字符串对象,但字符串池中已经有"xyz...
常见的`RuntimeException`子类包括`ArithmeticException`、`ArrayStoreException`、`BufferOverflowException`等。 #### 15. 错误(`Error`)与异常(`Exception`) - **`Error`**:表示严重的问题,通常是JVM本身...
在Java 14之后,switch可以用于字符串(String)。 32. **Singleton设计模式**:确保一个类只有一个实例,通常使用私有构造器、静态工厂方法和一个私有的类级静态变量来实现。 以上内容涵盖了Java语言中的一些关键...
在Java中,`new String("xyz")` 实际上创建了两个对象:一个字符串常量 `"xyz"` 在字符串常量池中,另一个是通过`new`关键字创建的`String`对象。这是因为`String`类是不可变的,所以每次使用`new`都会创建一个新的...
13. **`Set`集合去重机制**: `Set`利用`equals()`和`hashCode()`方法来确定元素的唯一性,`equals()`用于比较元素的值是否相等,而`hashCode()`则用于提高查找效率。 14. **常见的运行时异常**: 如`Arithmetic...
19. 子类覆盖hashCode()方法:当子类覆盖Object类的hashCode()方法时,通常应保持一致的行为,即返回与当前对象等价的哈希码。 这些知识点涵盖了数据结构、软件工程、数据库理论、Java编程基础、面向对象编程等多个...
+ ArithmeticException + IllegalArgumentException * int和Integer的区别 + int:基本数据类型,整数值 + Integer:包装类,装箱和拆箱 * 包装类、装箱和拆箱 + 包装类:Integer、Long、Float等 + 装箱:基本...
- 创建String对象时,如果字符串已经存在于常量池中,则不会创建新的对象,而是返回已存在的引用,这是Java中字符串不可变性带来的优化。 ### 8. 数学函数Math.round()的行为 - Math.round()用于四舍五入取整,但...