String hobby = new String("爱慕课");
String url = new String("www.imooc.com");
String hobby ="爱慕课";
String url = "www.imooc.com";
就单独这两行代码来说最终的结果是没有区别的,但如果你在这段逻辑之前还有一段比如说,String hobby1 = "爱慕课"; 就有区别了。
按你的第一种初始化方式就是另外选一个内存地址,然后这个对象指向这个地址;
第二种方式是hobby对象与hobby1指向同一个内存地址。
一个是常亮,一个是引用对象,一个可以直接用类名+hobby的形式调用,一个必须new的对象带调用
public class HelloWorld { public static void main(String[] args) { //定义字符串 String hobby = "爱慕课"; int hashCode = System.identityHashCode(hobby); System.out.println( hashCode ); System.out.println("hobby:" + hobby ); String hobby1 = "爱慕课"; int hashCode1 = System.identityHashCode(hobby1); System.out.println( hashCode1 ); System.out.println("hobby1:" + hobby1 ); String hobby2 = new String("爱慕课"); int hashCode2 = System.identityHashCode(hobby2); System.out.println( hashCode2 ); System.out.println("hobby2:" + hobby2 ); //String url = "www.imooc.com"; //String url1 = new String("www.imooc.com"); //输出字符串 //System.out.println("url:" + url ); }}
就楼主举例来看,使用new会创建2个对象,一个是“爱慕课”,一个是new出来给hobby引用的对象;使用操作符只是创建一个。
这个我不懂