关于java中String初始化问题

时间:2021-07-10 19:43:34
什么叫做 字符串初始化啊?  String s和 String s=null的区别是不是前者没有初始化,后者进行了初始化?

10 个解决方案

#1


是的,不仅仅是String类型,像其他的数据类型也是同样的、举个例子吧。String s ;和String s =null;后面需要使用s进行赋函数返回值,前者是没有进行初始化是会报错的。

#2


前者只是一个简单的声明
后者会为变量分配空间,其内的地址为空

#3


String s这样的没有初始化的会默认初始化为null,跟String s = null效果一样。别听上面瞎扯

#4


引用 3 楼 u014165119 的回复:
String s这样的没有初始化的会默认初始化为null,跟String s = null效果一样。别听上面瞎扯

对象类型会自动初始化的前提是作为类的属性。如果是在方法中或者局部代码块中,必须进行初始化

#5


引用 4 楼 crazypandariy 的回复:
Quote: 引用 3 楼 u014165119 的回复:

String s这样的没有初始化的会默认初始化为null,跟String s = null效果一样。别听上面瞎扯

对象类型会自动初始化的前提是作为类的属性。如果是在方法中或者局部代码块中,必须进行初始化

对的,方法中不初始化编译都通不过的。

#6


楼上的不要瞎说好不好,属性可以不显示初始化那是因为有隐式初始化,方法中不初始化编译不通过的前提是你后面有使用这个未初始化的变量

#7


string s 是一个声明,并没有给变量分配空间,string s=null 表示s的指向空,有一个引用地址(大概)

#8


前者是一个声明,后者进行了初始化,只声明的时候是不会分配内存空间的

#9


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

String s=""; 表示申请了内存资源,但资源空间值为空。该语句表示声明并引用到一个对象,只不过这个对象为0个字节.所以既然有了对象,就可以调用对象的方法
注意:"" 也是字符串
String s = String.Empty 与 String s=""; 是完全相同的

#10


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

String s=""; 表示申请了内存资源,但资源空间值为空。该语句表示声明并引用到一个对象,只不过这个对象为0个字节.所以既然有了对象,就可以调用对象的方法
注意:"" 也是字符串
String s = String.Empty 与 String s=""; 是完全相同的


String s="" 初始化和String s = null ,初始化,具体使用时应该用哪一个好呢?因为都是空吗,都可以重新赋值,我怎么感觉
String s = null 初始化比较好呢?因为赋值时,不需要再创建额外的空间,只需把 s 指向要赋值的内容即可啦!

#1


是的,不仅仅是String类型,像其他的数据类型也是同样的、举个例子吧。String s ;和String s =null;后面需要使用s进行赋函数返回值,前者是没有进行初始化是会报错的。

#2


前者只是一个简单的声明
后者会为变量分配空间,其内的地址为空

#3


String s这样的没有初始化的会默认初始化为null,跟String s = null效果一样。别听上面瞎扯

#4


引用 3 楼 u014165119 的回复:
String s这样的没有初始化的会默认初始化为null,跟String s = null效果一样。别听上面瞎扯

对象类型会自动初始化的前提是作为类的属性。如果是在方法中或者局部代码块中,必须进行初始化

#5


引用 4 楼 crazypandariy 的回复:
Quote: 引用 3 楼 u014165119 的回复:

String s这样的没有初始化的会默认初始化为null,跟String s = null效果一样。别听上面瞎扯

对象类型会自动初始化的前提是作为类的属性。如果是在方法中或者局部代码块中,必须进行初始化

对的,方法中不初始化编译都通不过的。

#6


楼上的不要瞎说好不好,属性可以不显示初始化那是因为有隐式初始化,方法中不初始化编译不通过的前提是你后面有使用这个未初始化的变量

#7


string s 是一个声明,并没有给变量分配空间,string s=null 表示s的指向空,有一个引用地址(大概)

#8


前者是一个声明,后者进行了初始化,只声明的时候是不会分配内存空间的

#9


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

String s=""; 表示申请了内存资源,但资源空间值为空。该语句表示声明并引用到一个对象,只不过这个对象为0个字节.所以既然有了对象,就可以调用对象的方法
注意:"" 也是字符串
String s = String.Empty 与 String s=""; 是完全相同的

#10


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

String s=""; 表示申请了内存资源,但资源空间值为空。该语句表示声明并引用到一个对象,只不过这个对象为0个字节.所以既然有了对象,就可以调用对象的方法
注意:"" 也是字符串
String s = String.Empty 与 String s=""; 是完全相同的


String s="" 初始化和String s = null ,初始化,具体使用时应该用哪一个好呢?因为都是空吗,都可以重新赋值,我怎么感觉
String s = null 初始化比较好呢?因为赋值时,不需要再创建额外的空间,只需把 s 指向要赋值的内容即可啦!