java long转换为int 类型 注意事项

来源:互联网 发布:澳门网络博客网站 编辑:程序博客网 时间:2024/05/22 06:42



public static int subDateFmtStr(String start, String end) {if (start == null || end == null) {return 0;}Date starttime = parseYMDHHmmssString(start);Date endtime = parseYMDHHmmssString(end);if (starttime == endtime) {return 0;}long temp = endtime.getTime() - starttime.getTime();System.out.println("temp:"+temp);/** * 注意: * long 是64位,int 是32位。 * 当使用强制类型把long转换为int类型有可能会出现负数问题, * 而Long.MAX_VALUE在Java中的值是2的63次方,即011111111111111(63个1) * 最前面的是符号位 0为正数,1为负数,int截取了后面的32位数 为111111111(32个1) * 这个值就是-1,因为负数是用补码表示的111111111(32个1) 正好就是-1的补码,所以 最终的结果就是-1.  * 例如: *  subDateFmtStr("20141229 16:21:58","20150210 11:43:28") *  *///return (int)temp;if (temp > 0) {//正数return 1;}else if(temp ==0 ){return 0;}else {//负数 取它的绝对值return -1;}}




1 1
原创粉丝点击