14.1常见对象:BigDecimal类的概述和方法使用
A:BigDecimal的概述
由于在运算的时候,float类型和double很容易丢失精度,演示案例。
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
不可变的、任意精度的有符号十进制数。
B:构造方法
public BigDecimal(String val)
C:成员方法
public BigDecimal add(BigDecimal augend)//加
public BigDecimal subtract(BigDecimal subtrahend)//减
public BigDecimal multiply(BigDecimal multiplicand)//乘
public BigDecimal divide(BigDecimal divisor)//除法
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)//scale 小数点后面保留几位
// roundingMode 取舍模式 比如四舍五入
案例演示:
如果对精度要求比较高,就可以使用 BigDecimal
public class MyTest {
public static void main(String[] args) {
double a=10;
double b=3;
System.out.println(a/b);
BigDecimal aNum = new BigDecimal(a);
BigDecimal bNum = new BigDecimal(b);
BigDecimal add = aNum.add(bNum); //加
System.out.println(add);
BigDecimal subtract = aNum.subtract(bNum); //减
System.out.println(subtract);
BigDecimal multiply = aNum.multiply(bNum);
System.out.println(multiply); //乘
//不能整除时,我们要规定,保留位数,以及取舍方式
BigDecimal divide = aNum.divide(bNum,30,BigDecimal.ROUND_CEILING);
System.out.println(divide);
System.out.println(1==0.1528965487899525455);
}
}
14.2常见对象:Date类的概述和方法使用
A:Date类的概述
类 Date 表示特定的瞬间,精确到毫秒。
B:构造方法
public Date()
public Date(long date) //把一个long类型的毫秒值转换成一个日期对象
C:成员方法
public long getTime(): 获取一个日期对象对象毫秒值
public void setTime(long time): 给一个日期对象设置上指定的毫秒值 例:date.setTime(1000 * 60 * 60) ;、
小结:Date ---- long 的转换
调用getTime方法
long — Date 的转换
可以使用构造方法
setTime(long time)
14.3常见对象:SimpleDateFormat类实现日期和字符串的相互转换
SimpleDateFormat:
可以把一个日期对象格式化成一个文本(字符串) , 也可以把一个日期字符串解析成一个日期对象。
构造方法:
- public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
- public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
成员方法:
public String format(Date date): 把一个日期对象格式化成一个字符串
public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意要以指定格式解析
组成规则
y 年
M 月
d 天
H 时
m 分
s 秒
14.4常见对象:Calendar类的概述和获取日期的方法
A:成员方法
public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
public final void set(int year,int month,int date) 设置日历时间 年月日
案例演示:
public class CalendarDemo {
public static void main(String[] args) {
Calendar instance = Calendar.getInstance();
//给相应的日历字段,加上会减去相应的量 减去可以填数负数
instance.add(Calendar.YEAR,-1);
int i = instance.get(Calendar.YEAR);
System.out.println(i);
instance.add(Calendar.DAY_OF_MONTH,2);
System.out.println(instance.get(Calendar.DAY_OF_MONTH));
//直接设置日期 set()
Calendar instance1 = Calendar.getInstance();
instance1.set(2000,6,19,14,20,20);
int i1 = instance1.get(Calendar.YEAR);
System.out.println(i1);
}
}
1. Calendar 类是一个抽象类,它为特定瞬间与一组诸如
2.YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段
3. (例如获得下星期的日期)提供了一些方法。
4. 瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
5.该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected。
6通过一个静态方法,获取该类的对象
如何实现Date与long相互转换?
Long类型的时间转换为date,可以通过SimpleDateFormat对象对格式进行定义,然后创建一个Date类型的对象封装时间,再通过SimpleDateFormat对象的format(date)方法就可以获取指定的日期格式了。
如何实现Date与String相互转换
需要给SimpleDateFormat指定格式,如yyyy-MM-dd,然后使用SimpleDateFormat的parse方法就可以实现将String类型转为Date类型了
常见对象(Calendar类的add()和set()方法)
A:成员方法
public void add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量
public final void set(int year,int month,int date) 设置日历时间 年月日
案例演示
public class RandomDemo {
public static void main(String[] args) {
//生成随机数据的类
// 此类的实例用于生成伪随机数流。此类使用 48 位的种子,
Random random = new Random();
//生成一些随机整数
byte[] bytes= new byte[10];
for (int i = 0; i < 100; i++) {
//int num = random.nextInt(); //如果没有传入一个范围,生成的随机数就是int的范围
//int num = random.nextInt(100); //范围就是 0-99 包含0和99
// int num = random.nextInt(100)+1;
// double num = random.nextDouble();
// boolean b = random.nextBoolean();
//随机一些byte范围的数,填到这个数组中
random.nextBytes(bytes);
System.out.println(Arrays.toString(bytes));
}
}
}
public class RandomDemo2 {
public static void main(String[] args) {
//Random( long seed)
//使用单个 long 种子创建一个新的随机数生成器。
//给定了种子,每次生成的随机数都是一样的
Random random = new Random(1L);
for (int i = 0; i < 10; i++) {
int i1 = random.nextInt(10);
System.out.println(i1);
}
}
}