关于String声明的一个问题 s2 += s-->s2=s2+s-->s2和s都需要初始化,因为为s = in.readLine()因此只要s2初始化就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为你这个语句有问题:String s2,s = new String();JAVA是个严谨的语言,跟VB不一样,你这样写的话只是初始化了s,而s2并没有被初始化。String s2 = null;String s = null; String s2,s = new String();相当于声明String s2; String s=new String();在java rules这书里String s2,s = new String();这种做法是不提倡的 需要这样的考虑的!你的s2 += s + "\n";本身其中还涉及到一个原始的s2的值的问题,肯定需要但是你的String s2,s = new String(); 只是定义一个存储的空间,根本不能替代原始的初值但是你的s 由于 是s = in.readLine())的那么只需要一个空间就可以那所以编译会认为你的s2没有初始化! String s2,s = new String();不能这样偷懒 java里重要的一点:局部变量必须在始用前初始化。编译的提示是s2“可能”没有初始化,也就是说while条件不一定成立,那么打印s2当然就不行了。但,s却不同,它在使用前是初始化了的。 String s2,s = new String();这样是申明了s2和s,但是只初始化了sString s,s2 = new String();这样是申明了s和s2,但是只初始化了s2String s,s2=new String();不等同于String s=new String();String s2=new String(); s2+=s+"\n" 即s2=s2+s+"\n" 表达式中存在没有初始化的变量s2 初学者问题while 是不是Java中的Bug? unix 下的java 程序设计入门问题 如何取得当前系统日期的后一天 如何执行一个 EXE 文件 如何用java,net包实现一个简单的ping 请问Java开发一般是用什么开发工具? 谁有jsp页面的语音聊天程序 怎么在类中执行批处理 为什么我照抄书上的程序,在jdk1.3下编译还出错,各位高手帮帮我!!! 高手帮忙,怎样保存?在线等。。。 java代码 问题请求解析!
JAVA是个严谨的语言,跟VB不一样,你这样写的话只是初始化了s,而s2并没有被初始化。
String s2 = null;
String s = null;
相当于声明String s2;
String s=new String();
在java rules这书里String s2,s = new String();这种做法是不提倡的
但是你的String s2,s = new String(); 只是定义一个存储的空间,根本不能替代原始的初值但是你的s 由于 是s = in.readLine())的那么只需要一个空间就可以那所以编译会认为你的s2没有初始化!
但,s却不同,它在使用前是初始化了的。
这样是申明了s2和s,但是只初始化了s
String s,s2 = new String();
这样是申明了s和s2,但是只初始化了s2
String s,s2=new String();不等同于String s=new String();String s2=new String();