1、看以下代码 Stirng类的hashcode 方法
/**
* 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;
}
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] *
这部分说明是这个string 的char数组的ascII拼接后31位进制的值。
不知道为什么是31,有什麽依据?。
2、1、看以下代码 Stirng类的toLowerCase方法片段
/* Now check if there are any characters that need to be changed. */
scan: {
int c;
for (firstUpper = 0 ;
firstUpper < count ;
firstUpper += Character.charCount(c)) {
c = codePointAt(firstUpper);
if (c != Character.toLowerCase(c)) {
break scan;
}
}
return this;
}
像是个1次循环,不过这种写法估计没怎么有人用过
何意?
我想在某些时候是可以减少点代码量的,不过貌似没多大意义
情况1:
action:{
for(...){
if(..)break action
}
do something
}
或
boolena flag =false;
for(...){
if(..){
flag =true;
break;
}
}
if(flag)
do something
情况2:
action:{
do something 1
if(flag) break action
do something 2
}
或
do Some thing 1
if(flag)
do Some thing 2
3、String 的intern 方法
/**
* Returns a canonical representation for the string object.
* <p>
* A pool of strings, initially empty, is maintained privately by the
* class <code>String</code>.
* <p>
* When the intern method is invoked, if the pool already contains a
* string equal to this <code>String</code> object as determined by
* the {@link #equals(Object)} method, then the string from the pool is
* returned. Otherwise, this <code>String</code> object is added to the
* pool and a reference to this <code>String</code> object is returned.
* <p>
* It follows that for any two strings <code>s</code> and <code>t</code>,
* <code>s.intern() == t.intern()</code> is <code>true</code>
* if and only if <code>s.equals(t)</code> is <code>true</code>.
* <p>
* All literal strings and string-valued constant expressions are
* interned. String literals are defined in §3.10.5 of the
* <a href="http://java.sun.com/docs/books/jls/html/">Java Language
* Specification</a>
*
* @return a string that has the same contents as this string, but is
* guaranteed to be from a pool of unique strings.
*/
public native String intern();
其实该方法没多大用,但其说明String 在内部是缓存的。
才发现,其实臧圩人已经说得很清楚了 我就不多赘述了
"在JAVA虚拟机(JVM)中存在着一个字符串池,其中保存着很多String对象,并且可以被共享使用,因此它提高了效率。由于String类是final的,它的值一经创建就不可改变,因此我们不用担心String对象共享而带来程序的混乱。字符串池由String类维护,我们可以调用intern()方法来访问字符串池。"
参见
http://zangweiren.iteye.com/blog/216005
分享到:
相关推荐
欢迎大家在这个代码的基础上修改以适合其他类型的手机短信文件。 遵循GNU/GPL协议发布。简单的说就是:你可以自由修改本程序的源代码,但在将基于本程序修改而来的软件再次发布的时候必须附上源代码,并不得删去原...
大家都听说过小巧实用的jQuery吧,交互式AJAX WEB程序设计的流行框架,不过jQuery的使用并非是可视化的,也就是说我们使用jQuery,就必须面对庞杂的代码,疯狂翻阅手册,为了给jQuery开发者有一个类似SDK一样的可视...
Ripsrc是一个用于分析Git存储库中的源代码的库 安装 go get -u github.com/pinpt/ripsrc 用法 您可以使用提供的示例命令行实现。 ripsrc code 这将按历史顺序(从最旧到最新)遍历所有提交,分析每个文件并转储...
DS1302中文资料,省去了翻阅英语词典的繁琐过程。带源代码.
就必须面对庞杂的代码,疯狂翻阅手册, 为了给jQuery开发者有一个类似SDK一样的可视化操作环境, 微软的Mix博客推出了使用WPF开发的Web的设计工具,它就是Glimmer。 通过它,你可以不必书写Jquery代码实现事件触发、...
可翻阅上一条下一条的网站滚动广告代码
程序源代码,用python-OpenCV做一个魔方墙找茬游戏,版本2.0,实现了在图像上加入了倒计时的功能,相关内容可以翻阅我的博客文章。
MATAB神经网络30个案例分析,各个章节的代码实现,本人将其调试、分类、整理并附上运行结果,以供读者在翻阅更好的理解知识 01-BP神经网络-分类 02-BP神经网络-拟合 03-GA-BP神经网络-拟合 04-GA-极值寻优 05-BP-...
由于ATS 6.0的变化比较大,所以如果您在使用/参照的源代码不是6.0版本,请翻阅官方git仓库中的源代码变化,以帮助理解。 联系作者 如果对内容有不理解,或者认为有错误,可以在github直接留言给我。 源代码目录结构 ...
最近翻阅了一下vue。发觉有一个单文件组件之前基本忽视掉了。vue.js中的单文件组件允许在一个文件中定义一个组件的所有内容。也就是说,一个页面或者是一个组件,我们想将他们捆绑在一起,那么vue的这个单文件组件...
四处翻阅,始终没发现谁有好用的扒站工具网站,便自己写了一个 !这是一款在线的网站模板下载程序,也就是我们常说的扒站工具,利用它我们可以很轻松的将别人的网站模板样式下载下来,这样就可以大大提高我们编写...
如果您是一个网站的站长,您正在寻找一套.Net源代码或程序可以让您的网站轻松生成一套配合网站整体架构的电子杂志频道,那您找对了,请您继续阅读以下EasyEMag介绍。 这是一个访客直接在线阅读且无插件(连flash都...
网博士,medipro图片上一个下一个 翻阅功能。网博士,medipro图片上一个下一个 翻阅功能
js实现的可翻阅上一条下一条的网站滚动动态demo
它的开发与应用,把企业所有技术数据存入计算机,省去了人工翻阅图纸和计算的繁重工作,大大节约了工作时间,减轻了工作人员的劳动强度;系统自动完成查询和计算的工作,打印查询报表,不再需要人工填制,不但提高了...
电子杂志代码,运用了flash来展示自定义的图像,具有动态翻页功能,像真的翻阅杂志一样,还有点击放大功能
一本介绍arm linux开发的教材,内容详实,关键是带标签,非常便于翻阅。
73、Jquery可翻阅上一条下一条的网站滚动广告代码
书中通过构建一个图形程序Dudel,介绍了iPad SDK的大量新特性,比如贝塞尔路径、PDF文件的创建、新框架Core Text、浮动窗口、视频播放控制器、拆分视图控制器、新的输入方法、手势识别和文档支持等。《iPad开发基础...
这是一个不可多得的HTML翻页效果,兼容性很强(当然,除了手机浏览器),但其效果值得学习,就两个字,专业。