知识点温故
1. poi读写exel文件的内容。
详情见 IntelliJ IDEA环境下 POI读写Exel文件 。
2. 计算两个date格式的日期之间相差的天数
按理说,计算两个date之间相差的天数,可以直接使用getTime()分别获得毫秒数后相减,再转换为天数。但是这种方法可能会产生误差。原因是直接相减有可能会多出一天,而我们想要的结果是不关心两个date的时、分、秒的值,只在乎两个“日”之间的差值。
那么为了避免这种情况,我们可以采用以下这种方式来获得想要的结果:
先讲Date对象转换为Calendar对象,将时、分、秒置零。再getTime()获取毫秒数相减就可以了。
示例代码:
public int calculateDaysBetween(Date firstDate,Date seconddate){
//初始化两个Calendar实例
Calendar firstCalendar = Calendar.getInstance();
Calendar secondCalendar = Calendar.getInstance();
//将date对象转换为Calendar类型
firstCalendar.setTime(firstDate);
secondCalendar.setTime(seconddate);
//将时、分、秒置零
firstCalendar.set(Calendar.HOUR_OF_DAY, 0);
firstCalendar.set(Calendar.MINUTE, 0);
firstCalendar.set(Calendar.SECOND, 0);
secondCalendar.set(Calendar.HOUR_OF_DAY, 0);
secondCalendar.set(Calendar.MINUTE, 0);
secondCalendar.set(Calendar.SECOND, 0);
//计算两个日期相差的天数
return ((int)(secondCalendar.getTime().getTime()/1000)-(int)(firstCalendar.getTime().getTime()/1000))/3600/24 + 1;
//加1是因为我需要的天数包括开始和结束的那两天
}
3. for each循环的使用
有的时候for each循环比for循环更高效,当遍历进行的操作与下标无关时,最好使用for each循环,这样我们就无须关心被遍历对象的长度,只需要把注意力集中在操作上面,会使得代码清晰不少。
示例代码:
for (TyphoonInfluence t : typhoonInfluenceList) {
String percentage = t.getFirst() / t.getAll() * 100;
t.setProportion(percentage);
}
4. 两个小知识点
两个数相除,结果的类型会与精度大的那个数保持一致。比如 int/int ,结果还是 int ;int / float 结果为float类型;int / double 类型,结果则为 double 类型。
想让浮点数格式化输出,可以用 String.format("%.nf",str) 方法,n为要保留的小数位数。
**5. 容易犯的小错误 **
这个以前也出现过,但还是偶尔忘记,有必要养成良好的习惯,保证以后不再犯同样的错误。
java中字符串的比较最好使用 .equals() 而不是 '’。因为’'比较的是字符串变量本身的值,即两个对象在内存中的首地址。而.equals()比较的则是字符串的内容。注意:这对StringBuffer不适用,因为它没有重写equals方法,用的还是Object的equals方法,即比较的还是两个变量的首地址。