○StringBuffer:可变长字符串,JDK1.0提供,运行效率慢,线程安全。
○StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全。
○思考:以下程序输出结果是多少?
public class TestBigDecimal{
public static void main(String[] args){
double d1=1.0;
double d2=0.9;
SyStem.out.println(d1-d2);
}
}
输出结果:0.999999999999999998
很多实际应用中需要精确运算,而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)除
○利用BigDecimal可以使用数值计算:
public class TestBigDecimal{
public static void main(String[] args){
BigDecimal bd1=new BigDecimal("1.0");
BigDecimal bd2=new BigDecimal("0.9");
BigDecimal result1=bd1.add(bd2);
System.out.println("bd1+bd2="+result1);
BigDecimal result2=bd1.subtract(bd2);
System.out.println("bd1-bd2="+result2);
BigDecimal result3=bd1.subtract(bd2);
System.out.println("bd1*bd2="+result3);
//输出结果:
bd1+bd2=1.9;
bd1-bd2=0.1;
bd1*bd2=0.90;
//执行除法运算时,抛出错误
//BigDecimal result4=bd1.divide(bd2);
//System.out.println("bd1/bd2="+result4);
}
}
注意:进行除法运算时,如果不能准确的计算出结果时需要指定保留的位数和取舍方式。
○除法:divide(BigDecimal bd,int scal,RoundingModel mode)
○参数scal:指定精确到小数点后几位。
○参数mode:
○指定小数部分的取舍模式,通常采用四舍五入的模式,
○取值为BigDecimal,ROUND_HALF_UP.
○Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
○时间单位
○1秒=1000毫秒
○1毫秒=1000微妙
○1微妙=1000纳秒
○Calendar提供了获取或设置各种日历字段的方法。
○构造方法
○protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。
○其他方法
//方法名 说明
static Calendar getInstance() 使用默认时区和区域获取日历
void set(int year,int month,int date,int
hourofday,int minute,int second) 设置日历的年、月、日、时、分、秒
int get(int field) 返回给定日历字段的值。字段比如年、月、日等
void setTime(Date date) 用给定的Date设置此日历的时间。Date-Calendar
Date getTime() 返回一个Date表示此日历的时间。Calendar-Date
void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间量
long getTimelnMillies() 毫秒为单位返回该日历的时间值
○SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。
○进行格式化(日期 -> 文本)、解析(文本 -> 日期)
○常用的时间模式字母
//字母 日期或时间 实例
y 年 2019
M 年中月份 08
d 月中天数 10
H 1天中小时数(0-23) 22
m 分钟 16
s 秒 59
S 毫秒 367
○System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。
//方法名 说明
static void arraycopy(...) 复制数组
static long currentTimeMillis(); 获取当前系统时间,返回的是毫秒值
static void gc(); 建议JVM赶快启动垃圾回收器回收垃圾
static void exit(int status); 退出jvm,如果参数是0表示正常退出jvm,非0表示异常退出jvm。
○内部类:
○在一个类的内部再定义一个完整的类。
○成员内部类、静态内部类、局部内部类、匿名内部类。
○Object类:
○所有类的直接或间接父亲,可存储任何对象。
○包装类:
○基本数据类型所对应的引用数据类型,可以使Object统一所有数据。
○String类:
○字符串是常量,创建之后不能改变,字面值保存在字符串池中,可以共享。
○BigDecimal
○可精确计算浮点数。
○Date
○特定时间
○Calendar
○日历
○SimpleDateFormat
○格式化时间
○System
○系统类