我们一般说的Date指的是util下的Date类:
1.java.util.Date的构造器
当使用Date(int year,int month,int day)构造器时,有偏差而且已经过时,不建议使用
Date date=new Date(2021,10,6); System.out.println(date); Date date1=new Date(2021-1900,10-1,6); System.out.println(date1);
2.java.util.Date的getTime()方法:返回1970-01-01 00:00:00至今的时间差(单位:毫秒)--也叫作:时间戳
Date date=new Date(); System.out.println(date.getTime());
3.java.util.Date的toString()方法:
Date date=new Date(); System.out.println(date.getTime()); System.out.println(date.toString());
4.java.sql.Date的构造器
java.sql.Date date=new java.sql.Date(System.currentTimeMillis()); System.out.println(date.toString());
5.java.util.Date转化成java.sql.Date
Date date=new Date(); java.sql.Date sqlDate=new java.sql.Date(date.getTime());Java常用类之Calendar
首先Calendar是个抽象类,所以没有办法实例化
①使用它的直接子类-->GregorianCalendar
②使用它的getInstance()方法返回一个GregorianCalendar的实例
具体使用:
Calendar calendar=Calendar.getInstance(); //获取GregorianCalendar的实例
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1);//返回星期,星期是从1开始, 即周日是1
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//返回当前月份的号数
System.out.println(calendar.get(Calendar.MONTH)+1);//返回月份,一月份为0
System.out.println(calendar.get(Calendar.YEAR)); //返回年份
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//返回从1月1号至现在的天数
System.out.println("********************************");
//add()方法
calendar.add(calendar.get(Calendar.DAY_OF_MONTH), 1); //当前号数加1
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
calendar.add(calendar.get(Calendar.YEAR), -1);
System.out.println(calendar.get(Calendar.YEAR));//当前号数减1
Calendar cl=Calendar.getInstance(); //getTime():获取当前的时间 System.out.println(cl.getTime()); //setTime():设置时间 cl.set(2000,1-1,21 ); System.out.println(cl.getTime());
注意细节:
①星期天是1,星期一是2,....,星期六是7
②一月份是0,二月份是1,.....,十二月份是11
Java常用类之SimpleDateFormat SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date=new Date();
String time=format.format(date); //format():格式化
System.out.println(time);
Date d=format.parse(time); //parse():解析
System.out.println(d);
Java常用类之Instant
Instant是java8中的新特性,类似于java.util.Date类
//实例化 Instant ins=Instant.now(); System.out.println(ins); //返回的是格林威治时间 OffsetDateTime time=ins.atOffset(ZoneOffset.ofHours(8)); //返回东8区的时间也就是北京时间 System.out.println(time); System.out.println(ins.toEpochMilli()); //返回1970-01-01 00:00:00至今的毫秒数
Java常用类之LocaDate、LocalTime、LocalDateTime
优点:①不可变性②不偏移③线程安全
//实例化
LocalDate date=LocalDate.now();
System.out.println(date);
LocalTime time=LocalTime.now();
System.out.println(time);
LocalDateTime dateTime=LocalDateTime.now();
System.out.println(dateTime);
System.out.println("************************************");
//of:设置时间
LocalDateTime dateTime1=dateTime.of(2022, 10, 1, 1, 21, 59); //设置时间,具有不可变性
System.out.println(dateTime);
System.out.println(dateTime1);
System.out.println("************************************");
//getXxx:获取属性
System.out.println(dateTime.getYear());
System.out.println(dateTime.getMonth());
System.out.println(dateTime.getDayOfMonth());
System.out.println("************************************");
//plusXxx:增加
LocalDateTime dateTime2=dateTime.plusMonths(1);
System.out.println(dateTime.getMonth());
System.out.println(dateTime2.getMonth());
System.out.println(dateTime.getMonthValue());
System.out.println(dateTime2.getMonthValue());
System.out.println("************************************");
//minusXxx:减
LocalDateTime dateTime3=dateTime.minusDays(6);
System.out.println(dateTime.getDayOfMonth());
System.out.println(dateTime3.getDayOfMonth());
Comparable接口和Comparator类
作用:使对象具有可比较性
说明:
1.String、包装类实现了Comparable接口,实现了compareTo方法,进行自然排序(从小到大)
2.compareTo(Object obj)实现的规则:
①this.对象>obj.对象,返回正整数
②this.对象 ③this.对象=obj.对象,返回0 3.自定义类实现Comparable接口,可在compareTo方法中自定义排序规则 Java高新技术——大数操作(BigInteger、BigDecimal)_李春春的专栏-CSDN博客_bigintegerimport org.junit.Test;
public class DateTest {
@Test
public void test1() throws ParseException {
Person [] arr=new Person[5];
arr[0]=new Person("小王",18);
arr[1]=new Person("小黄",17);
arr[2]=new Person("小付",18);
arr[3]=new Person("小瞿",21);
arr[4]=new Person("小何",22);
Arrays.sort(arr);
for(int i=0;ip.age) {
return 1;
}else if(this.agepublic class DateTest {
@Test
public void test1() throws ParseException {
Person [] arr=new Person[5];
arr[0]=new Person("小王",18);
arr[1]=new Person("小黄",17);
arr[2]=new Person("小付",18);
arr[3]=new Person("小瞿",21);
arr[4]=new Person("小何",22);
Arrays.sort(arr,new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Person && o2 instanceof Person) {
Person p1=(Person)o1;
Person p2=(Person)o2;
if(p1.getAge()>p2.getAge()) {
return -1;
}else if(p1.getAge()@Test
public void test1() throws ParseException {
BigInteger big1=new BigInteger("865432865432");
BigInteger big2=new BigInteger("765434765432");
System.out.println("BigInteger加法:"+big1.add(big2));
System.out.println("BigInteger减法:"+big1.subtract(big2));
System.out.println("BigInteger乘法:"+big1.multiply(big2));
System.out.println("BigInteger除法:"+big1.divide(big2));
BigInteger[] b= big1.divideAndRemainder(big2);
System.out.println("BigInteger取余的商:"+b[0]+"t余数:"+b[1]);
}
public class DateTest {
@Test
public void test1() {
System.out.println("BigDecimal的加法:"+MyMath.round(MyMath.add(10.25, 3.33), 1));
System.out.println("BigDecimal的减法:"+MyMath.round(MyMath.sub(10.25, 3.33), 2));
System.out.println("BigDecimal的乘法:"+MyMath.round(MyMath.mul(10.25, 3.33), 3));
System.out.println("BigDecimal的除法:"+MyMath.div(10.25, 3.33,4));
}
}
class MyMath{
public static double add(double d1,double d2) {
BigDecimal b1=new BigDecimal(d1);
BigDecimal b2=new BigDecimal(d2);
return b1.add(b2).doublevalue();
}
public static double sub(double d1,double d2) {
BigDecimal b1=new BigDecimal(d1);
BigDecimal b2=new BigDecimal(d2);
return b1.subtract(b2).doublevalue();
}
public static double div(double d1,double d2,int len) {
BigDecimal b1=new BigDecimal(d1);
BigDecimal b2=new BigDecimal(d2);
return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doublevalue();
}
public static double mul(double d1,double d2) {
BigDecimal b1=new BigDecimal(d1);
BigDecimal b2=new BigDecimal(d2);
return b1.multiply(b2).doublevalue();
}
public static double round(double d,int len) { //四舍五入
BigDecimal b=new BigDecimal(d);
BigDecimal b1=new BigDecimal(1);
return b.divide(b1, len, BigDecimal.ROUND_HALF_UP).doublevalue();
}
}
public class DateTest {
public static void main(String[] args) {
//多组输入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String len;
try {
while((len=br.readLine())!=null) { // 7*16+10*1 112+10
String str=len.substring(2);
Integer i=Integer.parseInt(str, 16);
System.out.println(i);
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
//多组输入
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
BigDecimal base=new BigDecimal("16");
String len;
try {
while((len=buf.readLine())!=null){
String str=len.substring(2);
BigDecimal big=new BigDecimal("0");
for(int i=0;i



