论坛首页 入门技术论坛

奇怪的String

浏览 1950 次
锁定老帖子 主题:奇怪的String
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-09  
OO

今天上午和同事讨论String的使用,众所周知,==比较两个字符串String的引用,equals比较两个字符串包含的值,那么大家看看,下面这几个的输出结果是什么样子呢?

	public static void main(String[] args) {
		String str = "hello";
		System.out.println(str == "hello");

		String str2 = new String("hello");
		System.out.println(str2 == "hello");

		String str3 = new String("hello");
		str3 = str3.intern();
		System.out.println(str3 == "hello");

	}

请大家给出运行结果,并给出为什么?

   发表时间:2008-12-09  
虚拟机做的些优化
str1 = "hello"
会保存住这个hello
str2 = "hello"的时候不会去重新申请,把现有的引用给str2
这时候str1 == str2
但是用new的话铁定会新建一个

很多语言都有这样的特定,传说python初始化的时候会直接把1-100初始化
每次用到这些数时不会去重新新建,而是得到对应的引用
0 请登录后投票
   发表时间:2009-01-16  
同意楼上观点,打印结果:true false true
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics