package com.yq1012.string; public class TestString { public static void main(String args[]){ String a="1234"; String b="1234"; String c = new String("1234"); System.out.println(a==b); System.out.println(a==c); System.out.println(a.equals(c)); } }
true
false
true
equals只是进行值判断不对类是不是同一个引用不进行判断,而==判断包括值和类引用.通过String a = “1234”这种产生的字面字符串,如果内存中存在字符串“1234”则会直接引用,如果没有则分配内存,因此a==b的结果为true。而String c = new String(“1234”),则会分配内存控件存储字符串,不考虑之前是否存在。因此a==c的结果false.由于a和c的值都是”1234″因此a.equals(c)的结果为true.同时Integer中也是类似的原理,因此使用Integer a = 12;时会在某种情况下提高程序的性能。