String s="abc"与String s=new String("abc")的区别
时间: 2024-02-12 19:46:10 浏览: 136
Java中关于String的全面解析
在Java中,String s="abc"和String s=new String("abc")都是创建一个字符串对象。但是,它们的区别在于:
1. 内存分配方式不同:String s="abc"是在常量池中创建一个字符串对象,Java虚拟机会在编译时将其放入常量池中,如果常量池中已经有"abc"对象,则直接返回该对象的引用;String s=new String("abc")会在堆中创建一个新的字符串对象。
2. 对象引用方式不同:String s="abc"是直接将字符串"abc"的引用赋值给s变量;String s=new String("abc")是先在堆中创建一个新的字符串对象,然后将该对象的引用赋值给s变量。
3. 比较方式不同:String s="abc"使用==比较时,比较的是引用地址;String s=new String("abc")使用==比较时,比较的也是引用地址;但是使用equals()方法比较时,比较的是字符串的内容。
阅读全文