字符串对象构造方法创建和直接赋值的区别
/* * 通过构造方法创建的字符串对象和直接赋值方式创建的字符串对象有什么区别呢? * 区别是:通过构造方法创建的字符串对象是在堆内存。通过赋值创建的字符串对象是在方法区的常量池 * * == * 基本数据类型:比较的是基本数据类型的值是否相同 * 引用数据类型:比较的是引用数据类型的地址值是否相同 (String是引用类型) */ public class StringDemo2 { public static void main(String[] args) { String s1=new String("hello");//通过构造方法创建字符串对象 String s2="hello";//直接赋值创建的字符串对象 System.out.println("s1:"+s1); System.out.println("s2:"+s2); //比较的是2个对象的地址 System.out.println("s1==s2:"+(s1==s2));//false String s3="hello"; System.out.println("s1==s3:"+(s1==s3));//false System.out.println("s2==s3:"+(s2==s3));//true } }
字符串的内容是存储在方法区的常量池里面的,是为了方便字符串的重复使用