BigDeciml
很多实际应用中需要精确运算,而double是近似值存储,不在符合要求,需要借助BigDecimal。
- 位置:java.math包中。
- 作用:精确计算浮点数。
- 创建方式:BigDecimal bd = new BigDecimal(“1.0”);
- 方法:
- BIgDecimal add(BigDecimal bd) 加
- BIgDecimal subtract(BigDecimal bd) 减
- BIgDecimal multiply(BigDecimal bd) 乘
- BIgDecimal divide(BigDecimal bd) 除
- 除法:divide (BigDecimal bd,int scal,RoundingMode mode)
- 参数scal:指定精确到小数点后几位
- 参数mode:
- 指定小数部分的取舍模式,通常采用四舍五入的模式。
- 取值为BigDecimal。ROUND_HALF_UP
public class Demo01 {
public static void main(String[] args) {
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
//面试题
double result = (1.4-0.5)/0.9;
System.out.println(result);
//BigDecimal,大的浮点数进行精确运算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//减法
BigDecimal r1 = bd1.subtract(bd2);
System.out.println(r1);
//加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2);
//乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);
//除法
BigDecimal r4 = new BigDecimal("1.4").subtract(new BigDecimal("0.5")).divide(new BigDecimal("0.9"));
System.out.println(r4);
//2是保留两位小数,BigDecima.ROUND_HALF_UP
BigDecimal r5 = new BigDecimal("20").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
System.out.println(r5);
}
}
Date
- Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
- 时间单位
- 1秒 = 1000毫秒
- 1毫秒= 1000微秒
- 1微秒= 1000纳秒
public class Demo01 {
public static void main(String[] args) {
//创建Date对象
Date date1 = new Date();
System.out.println(date1);
System.out.println(date1.toLocaleString());
//昨天
Date date2 = new Date(date1.getTime()-(60*60*24*1000));
System.out.println(date2);
//方法
boolean b1 = date1.after(date2);
System.out.println(b1);
boolean b2 = date1.before(date2);
System.out.println(b2);
//比较compareTo();
int d1 = date1.compareTo(date2);
int d2 = date2.compareTo(date1);
System.out.println(d1);
System.out.println(d2);
//比较是否相等equals();
boolean b3 = date1.equals(date2);
System.out.println(b3);
}
}
Calendar
-
Calendar提供了获取设置各种日历字段的方法。
-
构造方法
- procted Calendar():由于修饰符是protected,所以无法直接创建该对象。
-
其他方法
public class Demo01 {
public static void main(String[] args) {
//1.创建Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
System.out.println(calendar.getTimeInMillis());
//2.获取时间信息
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月
int month = calendar.get(Calendar.MONTH);
//获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//获取小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//分钟
int minute = calendar.get(Calendar.MINUTE);
//秒
int second = calendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+":"+minute+":"+second);
//3.修改时间
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,14);
System.out.println(calendar2.getTime().toLocaleString());
//4.add()方法修改时间
calendar2.add(Calendar.HOUR,1);
System.out.println(calendar2.getTime().toLocaleString());
//补充方法
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH) ;
System.out.println(max);
System.out.println(min);
}
}
SimpleDateFormat
- SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期的具体类。
- 进行格式化(日期===》文本)、解析(文本===》日期)。
- 常用的时间模式字母
public class Demo01 {
public static void main(String[] args) throws Exception{
//创建SimpleDateFormat对象 y年m月
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月dd日HH:mm:ss");
//创建Date
Date date = new Date();
//格式化date(把日期转换成字符串)
String str = sdf.format(date);
System.out.println(str);
//解析(把字符串转换成日期)
Date date2 = sdf.parse("2029年10月15日17:41:32");
System.out.println(date2);
}
}
System
- System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有。
2
public class Demo01 {
public static void main(String[] args) {
//arraycopy();数组的复制
//src;原数组
//srcPos;从哪个位置开始复制
//dest;目标数组
//destPos;目标数组的位置
//length;复制的长度
int[] arr = {12,54,78,413,4574,524,45,92};
int[] dest = new int[8];
System.arraycopy(arr,0,dest,0,arr.length);
for (int i = 0; i <arr.length ; i++) {
System.out.println(dest[i]);
}
long start = System.currentTimeMillis();
for (int i = 0; i <99999999 ; i++) {
for (int j = 0; j <999999999 ; j++) {
int result = i+j;
}
}
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));
}
}