1、String主要有这么两种赋值方式:一、类似普通对象,通过new创建字符串对象。Stringstr=newString("abc");二、类似原型那样直接赋值。如Stringstr="abc";这两种赋值方式有什么不同,估计很多人也多少有些了解?下面我们主要围绕几个问题展开:1、为什么String可以不用new就可以创建对象?2、这两种赋值方式有什么不同?一、打开了String.class,有这么一段介绍:viewplaincopytoclipboardprint?1./** 2.* The String
2、 class represents character strings. All 3. * string literals in Java programs, such as "abc", are 4. * implemented as instances of this class. 5. *
6. * Strings are constant; their values cannot be changed after they 7. * are created. String buffers
3、support mutable strings. 8. * Because String objects are immutable they can be shared. For example: 9. *
6、,其实JDK编译器会自动给你加上。但也并不全然,显式和隐式之间也有差别的。二、隐式:String password="ok";利用到了字符串缓冲池,也就是说如果缓冲池中已经存在了相同的字符串,就不会产生新的对象,而直接返回缓冲池中的字符串对象的引用。 如: String a = "ok"; //新建了一个String对象 String b = "ok"; // 从缓冲池找 String c = new String("ok"); //新建一个String对象 String d = new String("ok");