黑马程序员技术交流社区
标题:
求助,为什么要这么定义String s = null;
[打印本页]
作者:
孙松林
时间:
2012-10-26 19:35
标题:
求助,为什么要这么定义String s = null;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
String s = null;
while ((s=br.readLine())!=null) {
if ("over".equals(s)) {
break;
}
sb.append(s);
String str = new String(sb);
System.out.println(str.toUpperCase());
sb.delete(0, sb.length());
}
}
作者:
唐进
时间:
2012-10-26 19:49
如果你给s赋值的话,他的字会一直存放在内存中,s只是一个引用而已
作者:
刘岩喜
时间:
2012-10-26 19:51
你这个程序中,s 可以不初始化为空,因为程序必然会在 s=br.readLine()语句中初始化s
但是最好还是先初始化,这是很好的习惯,如果不初始化就调用会出现错误,一般像Eclipse会提示的。
作者:
李靖
时间:
2012-10-26 19:52
把s=null只是初始化而已,如果后面有给s赋值的话,开始时也可以不用给s赋值。不过如果没有任何的赋值,直接打印的话,会报异常,说没有初始化。
作者:
葬天
时间:
2012-10-26 19:58
java 规定
局部变量 使用前必须初始化
作者:
刘丽娜
时间:
2012-10-26 20:08
因为 局部变量在使用时要初始化吧 否则编译不过去的 不符合语法
作者:
赵红萍
时间:
2012-10-26 20:57
处于安全的考虑,java要求对所有的变量在使用前要初始化,所以在声明了一个变量后,要对它初始化,对于String类型的变量其实是一个引用类型的,就像String s ="abc",那么s 就指向了内存中的一个地址,这个地址存放了字符串abc,但是如果,你声明变量的值是要在程序运行以后,由程序给赋值,那么就可以给s 赋值为null,表示是个空的引用,避免s 指向其他的内存地址
作者:
徐升兴
时间:
2012-10-26 21:46
这个问题我之前思考过,因为java是一个强类型的语言,在定义成员变量的时候需要赋一个初始值。这样做是为了安全问题,如果你不定义初始值,程序也不会出错,但是在某些情况的时候程序就会出问题的。
所以在定义的时候最好还是定义一个初始值,养成一个良好的编程习惯
作者:
张其辉
时间:
2012-10-26 22:53
这个s属于局部变量,局部变量必须要给定初始值,成员变量可以不用初始化。如果用的是Eclipse它会给你报错的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2