练习题
package com.sq.systemTest;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
// ctrl + n 快速查找类
public class DateTest {
/*
题目:将字符串"2017-08-16"转换为对应的java.sql.Date类的对象。
(使用 JDK8 之前或 JDK8 中得 API 皆可)
*/
@Test
public void text1(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
// Date parse = sdf.parse("2017-08-16");
java.util.Date parse = sdf.parse("2017-08-16");
java.sql.Date date = new java.sql.Date(parse.getTime());
// java.sql.Date date1 = new java.sql.Date(0);
// System.out.println(parse.getTime());// 1970/1/1 午夜距离该日期时间的毫秒数
System.out.println(date);
// System.out.println(date1);// 1970-01-01
} catch (ParseException e) {
e.printStackTrace();
}
}
@Test
public void test2(){
// java.sql.Date.valueOf(String s) 的 s 格式必须为yyyy-MM-dd 格式
String s = "2017-08-16";
java.sql.Date d = java.sql.Date.valueOf(s);
System.out.println(d);//2017-08-16
}
// 非完整代码
@Test
public void test3(){
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 未完成
}
}
/*
解释何为编码?解码?何为日期时间的格式化?解析?
编码:字符串 —> 字节
解码:字节 —> 字符串
格式化: 日期 -> 字符串
解析: 字符串 —> 日期
*/
/*
自定义 Person 类如下,如何实现自然排序(按姓名从小到大排序).
*/
class Person implements Comparable {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Object o) {
if( o instanceof Person){
// 从小到大
return this.name.compareTo(((Person)o).name);
// 从大到小
// return -this.name.compareTo(((Person)o).name);
}
throw new RuntimeException("传入的数据类型不一致!");
}
/*
提供定制排序涉及到的接口的实现类对象,并按 Person 类的年龄从大到小排序
*/
// Comparable接口的方式一旦一定,保证 Comparable接口实现类得对象在任何位置都可以比较大小。
// Comparator接口属于临时型的比较
Comparator comparator = 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;
return -(p1.getAge() - p2.getAge());
}
throw new RuntimeException("输入的数据类型不一致");
}
};
}
/*
JDK8 之前日期时间 JDK8 中日期时间
java.util.Date和java.sql.Date -> Instant
SimpleDateFormat -> DateTimeFormatter
Calendar -> LocalDate、LocalTime、LocalDateTime
*/