java编程中容易出错的点

1.java的For-Each,对于下面的list需要判断,如果直接for list会报null异常。
List<String> list =null;
if(null!=list&&list.size()>0){
for (String str : list) {
//handle the logic
}
}

2.linux和unix系统的换行是"/n",而windows的换行并不是直接的"/n",是"/r/n"。所以out.write("/n")只能得到一个黑框,因为windows不认为这是个“换行”。 直接从记事本输入的话,windows自动输入了"/r/n",所以从从文本文件中读出来的也是"/r/n",可以正常显示。
      那么这是为什么呢?稍微学过正则表达式的朋友都知道:/r是回车符,而/n是换行符。Windows默认/n在文档中显示的是一个空格或者小黑框。所以,要先回车,再换行。

3.看着简单,容易忽视,面向对象基础,传值引用。
Set productSet=map.get(oneSplitName);
如果不想更改原有map的value值,却在productSet上做操作,就会影响原有的map的value值。
如果不想更改原有map的value值,在或缺productSet之后的操作过程中,确实可能要更改productSet,
要小心,如下方式避免
Set productSet =new HashSet();
productSet.add(map.get(oneSplitName));
然后在在productSet上做操作,更改productSet不会影响原有map的value值了。

4.在查找log过程中出现的错误
将log切换到下面模式,然后在服务器上运行,将标准输出(控制台)到统一个文件$LOGFILE
./RunProduct.sh $country >> $LOGFILE 

#log4j.rootLogger=INFO,infoOutput, errorOutPut
log4j.rootLogger=INFO,stdout

infoOutput,errorOutPut是在下面的配置中指定的某个级别的输出目录。
如果不切换,在LOGFILE文件里接受不到log4j的信息,而是在指定的文件中生成。

5.String str="a  b  c";两个空格
split后出现的数组为"",而不是" "

你可能感兴趣的:(java编程)