java 容易犯错_Java中几个容易犯错的地方

de3b4a54f220c8119a1959c95a2da3a8.png

慕田峪4524236

1,byte[]的长度写了一个从文件里读字符串的函数:public static String readFile(String fFileName){//, String fEncoding) {char[] buffer = new char[1024];StringBuilder text = new StringBuilder();InputStreamReader reader = null;try {reader = new InputStreamReader(new FileInputStream(fFileName));while (reader.read(buffer, 0, 1024)!=-1){text.append(buffer); <==有错}}catch(Exception e){e.printStackTrace();}finally{if(reader!=null){try {reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return text.toString();}粗看这段代码没有问题。但是读出的字符总比实际要多。问题在text.append(buffer)。 buffer是一个1024的char数组。每次append固定的1024个char.改成就好了。reader = new InputStreamReader(new FileInputStream(fFileName));int readed;while ((readed = reader.read(buffer, 0, 1024))!=-1){text.append(new String(buffer, 0, readed));}2,优先级的错误Log.d(TAG, "location="+where+", "+locationService==null?"null":locationService.getLocation());这行代码的本意是如果locationService==null,就输出"null",避免NullPointerException.但实际上仍然发生NullPointerException.原来"+"的优先级大于"?",所以上面代码实际上是:Log.d(TAG, ("location="+where+", "+locationService)==null?"null":locationService.getLocation())括号里的当然不会是null.改成Log.d(TAG, "location="+where+", "+(locationService==null?"null":locationService.getLocation()));就好了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值