String类型的null,String(),String("");之间有什么区别?

来源:2-2 Java 中字符串的不变性

红茶不能洒

2017-03-29 23:10

String s;
String s1=null;
String s2=new String();
String s3=new String("");

比如说定义的这四个变量之间有什么不同?

写回答 关注

2回答

  • 慕粉2154084089
    2017-03-30 00:27:59
    已采纳

    当声明为String  s1时;

    声明一个字符串对象,分配了一个内存空间,没有进行初始化,没有存入任何对象。

    当声明为String  s2 = null时;

    声明一个字符串对象,分配了一个内存空间,进行初始化,存入了一个空对象,值为空。

    当声明为String  s3 = new  String 时;

    声明一个字符串对象,分配了一个内存空间,没有进行初始化,是在堆中创建一个字符串对象,

    并把引用放在栈中指向他的首地址。

    当声明为String  s4 = new  String("" ) 时;

    声明一个字符串对象,分配了一个内存空间,初始化,存了一个字符串对象

    是在堆中创建一个字符串对象,并把引用放在栈中指向他的首地址。


  • 橙子chengzi
    2017-03-30 00:19:05

    String s ;该语句表示只是声明了一个引用变量,但是并没有初始化引用,所以对变量s的任何操作(除了初始化赋值外) 都将引发异常.
    String s=null; 表示未申请任何内存资源,即些语句表示声明了一个引用变量并初始化引用,但是该引用没有指向任何对象.但可以把它作为参数传递或其它使用,但是不能调用它作为对象的方法


Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409784 学习 · 4339 问题

查看课程

相似问题