使用JAVA发现的一些小问题

一、判断字符串为空、长度为0

刚开始写了如下代码,在一个循环进行处理,若是字符串为空就进行下一次循环。

String rateStr=s[6].trim();
if (rateStr == null)
	continue;
Double rate=Double.parseDouble(rateStr);

但是提示empty String异常,最后发现,空字符串和null是不一样的,如下说明:

  1. null表示这个字符串不指向任何的东西,如果这时候你调用它的方法,那么就会出现空指针异常。

  2.""表示它指向一个长度为0的字符串,这时候调用它的方法是安全的。
  3. null不是对象,""是对象,所以null没有分配空间,""分配了空间,例如:

    String str1 = null; str引用为空 
    String str2 = ""; str应用一个空串

    str1还不是一个实例化的对象,儿str2已经实例化。

    对象用equals比较,null用等号比较。

    如果str1=null;下面的写法错误: 
       if(str1.equals("")||str1==null){ } 
   正确的写法是 if(str1==null||str1.equals("")){ //先判断是不是对象,如果是,再判断是不是空字符串 }

  4. 所以,判断一个字符串是否为空,首先就要确保他不是null,然后再判断他的长度。
     String str = xxx;
     if(str != null && str.length() != 0) { }

 

最后修改为如下,执行成功

String rateStr=s[6].trim();
if (rateStr == null || rateStr.length() == 0)
	continue;
Double rate=Double.parseDouble(rateStr);

二、java BufferedWriter写数据不完全

程序中写出400行数据,但总是少几行,而且每次少的个数不一样。联想到apue中数据缓冲和冲洗,刚开始以为是没有进行延时或者冲洗的原因,过早的关闭了文件。但对java不太熟悉,直接在网上查找。

发现要保证写出数据完全,文件关闭顺序最好是:

bw.close();
br.close();
先写完再关闭读端。对照发现我的程序中忘记写bw.close()语句,导致读端过早关闭结束了程序导致的。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值