码迷,mamicode.com
首页 > 编程语言 > 详细

java - String 浅谈

时间:2015-03-02 13:04:11      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

	/**
		 * String s1 = "a";
		 * 编译器会先检查常量池中是否已经有"a":
		 * 如果没有,则在常量池先创建,后引用.
		 * 如果有,则直接引用;
		 * 所以执行该语句,会产生0个或1个对象.
		 * 这里,会创建1个对象.
		 */
		String s1 = "a";
		/**
		 * String s2 = new String("a");
		 * 编译器先在堆中创建一个对象,然后去常量池中检查是否已有"a":
		 * 如果没有,则先在常量池创建,然后将堆中的引用指向常量池的对象;
		 * 如果有,则直接将堆中的引用指向常量池中的对象;
		 * 所以执行该语句,会产生1个或2个对象.
		 * 这里,会创建1个对象.
		 */
		String s2 = new String("a");
		System.out.println(s1==s2);	//false

 

以上代码,在jvm简单内存图可简述为:

技术分享

而以上==比较的会是对象的地址,所以结果为false

java - String 浅谈

标签:

原文地址:http://www.cnblogs.com/listened/p/4308431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!