String s;和String s=null;和String s="a";有什么区别?
2017-05-08 19:33
218 查看
Strings;和Strings=null;和Strings="a";有什么区别? 针对这三种情况,使用out.println(s);的时候,第一个会出现异常,第二个会输出null.第三个则会输出a.
这是为什么呢?这三句声明语句,各自作了什么呢? 答: 第一个只是定义了一个String类型变量s,并没有给它赋初值,在Java中,默认在使用一个变量的时候必须赋予它初值(降低风险)。 第二个和第三个都定义了String类型变量s,并赋予它初值,只不过第二个赋予的值为null(空)罢了 主要要理解的是Strings;s为一个引用~~它不是对象 第一个是没有初始化的引用; 第二个为空引用; 第三个是在字符串池里写入一个字符'a',然后用s指向它。 另外, Strings="a"和Strings=newString("a");是有本质上的区别的 前者是在字符串池里写入一个字符'a',然后用s指向它; 后者是在堆上创建一个内容为"a"的字符串对象。 Stringstr="aaa";//于栈上分配内存 Stringstr=newString("aaa");//于堆上分配内存 Strings;系统会自动赋值null Strings;只是给s分配一个内存空间 Strings=null;是分配的空间中存储的值为空值 Strings="a";这句就不用我多说了分配的空间的值为字符a 延伸补充:
在成员变量的定义中,Strings;等同于Strings=null; 而在本地变量(方法变量)的定义中,Strings;不等同于Strings=null;,这时要使用s必须显式地赋值。 这些虽然是小知识点,但在实际应用中很重要,也很容易被一些人忽视,特此提出。 还有一点要说明的是: 只要是在方法在中定义变量都要显示赋初值,main()方法也不例外,而在方法之外编译器回自动赋初值。
相关文章推荐
- String s;和String s=null;和String s="a";有什么区别?
- String中的null,"",以及String s;等等的区别详解
- String中的null,"",以及String s;等等的区别详解
- String abc=null;String abc="";String abc;三种写法有什么区别?
- String中的null,"",以及String s;等等的区别详解
- String str=null; 和String str=""有什么区别
- String s = Null 与 s="" 有什么区别?null意思是不存在,""意思是存在,但是值为空 null表示还没new出对象,就是还没开辟空间 “”表示new除了对象,但是这个对象装的是空
- String s=null和String s=""和String s 的区别
- string s;string s=null;string="";string s=string.Empty的区别
- 我理解的string s = string.Empty,string s = null和string s = ""三者之间的区别
- C#中NULL,"",DBNULL,String.Empty,Convert.IsDBNull()的区别
- String.Empty,NULL和""的区别
- C#中NULL,"",DBNULL,String.Empty,Convert.IsDBNull()的区别
- String.Empty,NULL和""的区别
- String.Empty,NULL和""的区别
- Asp.Net中String.Empty、null和""的区别
- String.Empty,NULL和""的区别
- String.Empty、""和NULL的区别
- string str=null;和string str="";的区别(网摘)
- String.Empty、""和NULL的区别