Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
167 views
in Technique[技术] by (71.8m points)

java - What are variables "offset" & "hash" in String.hashCode()?

I've read that this is the source code for String.hashCode()

   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;
   }

My question is, what are "offset" & "hash"? I can tell that "value" is the actual String and "length" is its length, but I don't understand what the other two are.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The offset is the first index of the value[] array of chars of the String. The hash variable is a field for caching the hashCode so as to be more efficient (the hashCode() method only computes the hash if it's current value is 0; else it returns the cached hash)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...