杂类
BigDecimal的使用
-
位置:java.math包中
-
作用:精确计算浮点数。
-
创建方式:
BigDecimal bd = new BigDecima("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.
package com.lin.clas.demo10;
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
//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);
//除不尽
//scale:保留几位小数
//roundingMode:保留模式
//BigDecimal.ROUND_HALF_UP:四舍五入
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"), 3, BigDecimal.ROUND_HALF_UP);
System.out.println(r5);
}
}
Date
- Date表示特定的瞬间,精确到毫秒。Date类中大部分方法都已经被Calender类中的方法所取代。
package com.lin.clas.demo11;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date1 = new Date();
//今天
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());
//昨天
Date date2 = new Date(date1.getTime()- (60*60*24*1000));
System.out.println(date2.toLocaleString());
//after before
date1.after(date2);//true
date1.before(date2);//false
date2.before(date1);//true
//compareTo();
int r = date1.compareTo(date2);
System.out.println(r);//1
//比较是否相等
boolean r1 = date1.equals(date2);//false
System.out.println(r1);
}
}
Calendar
- Calendar提供了获取或构造各种日历字段的方法。
- 构造方法:protected Calendar():由于修饰符是protected,所以无法创建该对象
- 注意:月 从0-11 后面+1
方法名 | 说明 |
---|---|
static Calender getInstance() | 使用默认市区和区域获取日历 |
void set(int year,int mouth,int date,int hourofday,int minute,int second) | 设置日历的年、月、日、时、分、秒。 |
int get(int field) | 返回给定日历字段的值。字段如年月日等 |
void setTime(Date date) | 给定的Date设置此日历的时间。Date-Calender |
Date getTime() | 返回一个Date表示此日历的时间Calender-Date |
void add(int field,int amount) | 按照日历的规则,给制定字段添加或减少时间 |
long getTimeInMillies() | 毫秒为单位返回该日历的时间值 |
package com.lin.clas.demo12;
import java.util.Calendar;
public class Test {
public static void main(String[] args) {
//创建Calendar对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
System.out.println(calendar.getTimeInMillis());
//获取时间信息
//获取年
int year = calendar.get(Calendar.YEAR);
//月 从0-11 后面+1
int month = calendar.get(Calendar.MONTH);
//日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);//24小时制
int hour2 = calendar.get(Calendar.HOUR);//12小时制
//分钟
int minute = calendar.get(Calendar.MINUTE);
//秒
int second = calendar.get(Calendar.SECOND);
System.out.println(year+"年"+(month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
//修改时间
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH, 5);
System.out.println(calendar2.getTime().toLocaleString());
//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是一个以语言环境有关的方式格式化和解析日期的具体类
- 进行格式化(日期->文本)、解析(文本->日期)
字母 | 日期或时间 | 实例 |
---|---|---|
y | 年 | 2018 |
M | 年中月份 | 08 |
d | 月中天数 | 10 |
H | 一天中小时数(0-23) | 22 |
m | 分钟 | 26 |
s | 秒 | 12 |
S | 毫秒 | 268 |
package com.lin.clas.demo13;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//创建Date
Date date = new Date();
//格式化date:把时间转化为字符串
String str = sdf.format(date);
System.out.println(str);
//解析:把字符串转化为时间
String str2 = "2020年10月10日 10:10:10";
Date date2 = sdf.parse(str2);
System.out.println(date2.toLocaleString());
}
}
System类
- 主要用于获取系统的属性数据和其他操作,构造方法私有的。
方法名 | 说明 |
---|---|
static void arraycopy() | 复制数组 |
static long currentTimeMillis() | 获取当前系统时间,返回毫秒值 |
static void gc() | 建议JVM赶快启动垃圾回收器回收垃圾 |
static void exit(int status); | 退出JVM,如果参数为0表示正常退出JVM,非0表示异常退出JVM |
package com.lin.clas.demo14;
public class Test {
public static void main(String[] args) {
//arraycopy()方法
//src:源数组
//srcPos:源数组的起始位置
//dest:目标数组
//destPos:目标数组的起始位置
//length:复制的长度
int[] arr = {1,2,3,4,5,6,7,8,9};
int[] arr2 = new int[10];
System.arraycopy(arr, 2, arr2, 0, 5);
for (int i : arr2) {
System.out.println(i);
}
//Arrays.copyOf()方法
System.out.println(System.currentTimeMillis());
//计算程序运行时间
long start = System.currentTimeMillis();
for(int i = 0;i<=99999999;i++)
{
for(int j = 0;j<=99999999;j++)
{
}
}
long end = System.currentTimeMillis();
System.out.println(end-start);
//System.gc():通知垃圾回收器回收垃圾
System.gc();
System.exit(0);//退出程序
System.out.println(666);
}
}