我在书上看到如下一段,有句话不明白。类java.lang.String的成员方法
public String intern()
首先判断当前字符串是否已经在字符串池中。如果当前字符串已经在字符串池中,则返回当前字符串的引用。如果当前字符串不在字符串池中,而且字符串池已经含有与当前字符串相同字符序列的字符串实例对象,则返回在字符串池中这个字符串的引用。如果在字符串池中不存在与当前字符串相同字符序列的字符串实例对象,则在字符串池中创建一个新的具有与当前字符串相同字符序列实例对象,并返回新创建的字符串的引用。
我不明白的是第二个如果: “如果当前字符串不在字符串池中,而且字符串池已经含有与当前字符串相同字符序列的字符串实例对象,则返回在字符串池中这个字符串的引用。”
有两个问题请教:1.既然字符串已经不在字符串池中了,怎么字符串池还会含有与当前字符串相同字符序列的字符串实例对象?
2.字符串和字符串实例对象有什么区别,难道他们不一样吗?
public String intern()
首先判断当前字符串是否已经在字符串池中。如果当前字符串已经在字符串池中,则返回当前字符串的引用。如果当前字符串不在字符串池中,而且字符串池已经含有与当前字符串相同字符序列的字符串实例对象,则返回在字符串池中这个字符串的引用。如果在字符串池中不存在与当前字符串相同字符序列的字符串实例对象,则在字符串池中创建一个新的具有与当前字符串相同字符序列实例对象,并返回新创建的字符串的引用。
我不明白的是第二个如果: “如果当前字符串不在字符串池中,而且字符串池已经含有与当前字符串相同字符序列的字符串实例对象,则返回在字符串池中这个字符串的引用。”
有两个问题请教:1.既然字符串已经不在字符串池中了,怎么字符串池还会含有与当前字符串相同字符序列的字符串实例对象?
2.字符串和字符串实例对象有什么区别,难道他们不一样吗?
解决方案 »
- 下载exceL被IE阻止了。怎么解决啊?
- 求教 用键盘控制FLASH游戏选项
- 怎样用java获取数据库中表s的表头
- Calendar.getInstance().getTimeInMillis()和System.currentTimeMillis()是否有区别?
- 请问这段代码是什么意思?
- 怎样在filter里面修改request的参数?
- 关于.properties文件的问题
- 请指教java调用Oracle存储过程,返回数组型参数,取参数值报错
- ★☆★问下java里计算日期天数的问题, 100分相送★☆★★☆★★☆★
- 如何实现目录选择控件!类似于JFileChooser控件!
- 向上转型问题
- List<Integer> list ; 中的尖括号是什么意思?
一个口袋是本身就存在的K1.
比如:String Str1 = "ABCD";另外在构造一个新的字符串时新建的一个口K2.
比如:String Str2 = new String("ABCD");这个时候 你就用intern看Str2 是不是在K1里面.
不知道我这种解释你能懂不.
这个帖子看完应该就明白了.
String b = new String("abc");b不在字符串池中
b = b.intern()虽然b之前不在字符串池中,但是a在,这样就直接返回a的内存地址,这样a==b了
不知道你懂了么再给我的Blog做个广告吧 呵呵 对于String的认识
我是路过接分的~