您的位置:首页 > 编程语言 > Java开发

java之String对象的比较

2015-06-15 20:04 465 查看
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/46507283
作者:小马

String对象的比较与一般的对象还是有些区别的,看下面这段代码,

public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		
		String s1 = "abd";
		String s2 = "abd";
		
		String s3 = new String("123");
		String s4 = new String("123");
		
		
		
		System.out.println(s1 == s2);
		System.out.println(s1.equals(s2));
		
		
		System.out.println(s3 == s4);
		System.out.println(s3.equals(s4));


输出结果:

true
true
false
true


比较两个字符串一定要用equals而不是直接用==,因为后者比较的是引用,而不实际值,这一点与普通对象是一样的,但是输出结果为什么s1和s2相等呢? 这是因为,如果s1和s2都是同一个字面量赋值,那么无论是用==比较,还是用equals函数比较,都会返回true。多个String引用指向同一个字面量时,在堆内存当中只有一个Java对象。

s3和s4是不相同的,原因是如果调用String的构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个String对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: