io流变量在new前,为什额还需要赋值为null。

fileinputstream in=null;
try{
in=new fileinputstream(f);
}catch{
}finally{
if(in!=null) in.close();
}
定义变量in时,为什么还需要赋值为null;
这里的概念不太清楚。

又想起了,有些时候定义的基本类型的变量,eclipse也提示需要赋一个初始值,

6个回答

这是因为JAVA要求在使用变量之前必须要初始化,JAVA不像C/C++一样,在定义局部变量的时候会给一个初始值。

所有的语言都有这样的规范要求,但不是强制的。你试着不赋值,看看编译时会不会报错!

91program
91program 回复Soulic: 您回复错位置了吧?你的回复应该是上一楼那位回复后,你想答复他的吧!!!
4 年多之前 回复
bhdgx
Soulic 在这里是要强制赋值的,不然在finally中使用会出问题,编译会报为初始化的错误
4 年多之前 回复
91program
91program 另外,一般编译器在处理局部变量时,如果不赋初始值时会是随机的数值。因为随机的数值存在一定的风险,如变量忘记new时会引起应用异常。
4 年多之前 回复

因为你在后面要用,如果写在try catch中finally无法访问,
另外赋值null会在内存中有一块儿空间,否则没有。

因为在try中定义变量的话 变量 in是一个局部变量作用范围只在Try{}里面,finally{}里面没法调用。所以定义在外面的,变量初始化就不用说了

给变量赋初始值,方便在finally里使用判断,不然只是声明了变量,没值,后面怎么做值得判断

Java中使用变量前需要先赋值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问