在java中while (!str.equals(""))与while (str!=null)有啥区别?

以下是代码的一段Stringstr=buf.readLine();//读取一行while(!str.equals("")){buff.write(str);//将str写... 以下是代码的一段
String str = buf.readLine();//读取一行
while (!str.equals("")) {
buff.write(str);//将str写入到缓冲区
buff.newLine();//写入换行符
buff.flush();//将缓冲区内的数据写入到文件
str = buf.readLine();
}将上述代码中while改为
while (str!=null)就结束不了循环
PS:
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
展开
 我来答
黑暗侍卫
推荐于2018-04-11 · TA获得超过215个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:130万
展开全部
str.equals("")是比较字符串与“”的值是否相等,而str!=null是判断字符串的指针是否为空值。这根字符串的存储结构有关系,堆栈内存地址等等。。
更多追问追答
追问

为啥以上程序循环能结束

追答
读取文件,当读取最后一行结束时,lineNum自增了,这是br1调用readLine方法得到的数据信息(最后一行的下一行)是空的,S就是null,没有值而不是“ ”
197hugh
2013-07-31 · TA获得超过899个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:361万
展开全部
""表示空字符null表示没有指向任何字符。
显然这里没有字符可以结束循环。这里你str被声明并赋值了,它的值可以是空字符,但它的地址不为空。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莫善——莫离
2013-07-30
知道答主
回答量:35
采纳率:100%
帮助的人:21.2万
展开全部
while (str!=null)这个一般不提倡使用,字符类型很可能报空指针错误。null!=“”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
罗威先森
2013-07-30 · TA获得超过121个赞
知道答主
回答量:160
采纳率:0%
帮助的人:78.4万
展开全部
一个是比对值,如“!=”和“=”,一种是比对内存地址如:“equals”。你琢磨一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式