20145316《Java学习程序设计》第七周学习总结
教材学习知识总结
-
1.在只有Lambda表达式的情况下,参数的类型必须写出来。
-
2.Lambda表达式本身是中性的,同样的Lambda表达式可用来表示不同目标类型的对象操作。
-
3.Lambda表达式只关心方法命名上的参数与返回定义,但忽略方法名称。
-
4.如果变量不会在匿名类中有重新指定的动作,就可以不用加上final关键词。
-
5.只要静态方法的方法命名中参数与返回值定义相同,也可以使用静态方法来定义函数接口操作。
-
6.JDK8定义的通用函数接口,基本上放置于java.util.function套件之中,就行为来说,基本上可以分为consumer,function,predicate,supplier四个类型。
-
7.Epoch为某个特定时代的开始,时间轴上某一瞬间。
-
8.取得系统时间的方法之一是使用System,currentTimeMillis()方法,返回的是long类型整数。
-
9.Date实例基本上建议只用来当做时间轴上的某一瞬间。
-
10.ofDays(),ofMonths(),ofWeeks()其实是Period的静态方法,他们会返回period实例。
-
11.新时间日期处理API的主要套件命名为java.time。
-
12.plus方法接受java.time.temporal.TemporalAmount实例,而TemporalAmount的操作类也就是Period与Duration。实际上plus()方法也可以接受Duration实例来计算。
-
13.使用Instant的静态方法now()可以取得代表java epoch毫秒数的Instant实例。
教材代码练习
- import java.util.;
import static java.lang.System.;
public class DateDemo {
public static void main(String[] args) {
Date date1 = new Date(currentTimeMillis());
Date date2 = new Date();
out.println(date1.getTime());
out.println(date2.getTime());
}
}
-
import java.util.;
import static java.lang.System.out;
import static java.text.DateFormat.;public class DateFoematDemo {
public static void main(String[] args) {
Date date = new Date();
dateInstanceDemo(date);
timeInstanceDemo(date);
dateTimeInstanceDemo(date);
}static void dateInstanceDemo(Date date) {
out.println("getDateInstance() demo");
out.printf(" SHORT: %s%n", getDateInstance(LONG).format(date));
out.printf(" SHORT: %s%n", getDateInstance(SHORT).format(date));
}static void timeInstanceDemo(Date date) {
out.println("getTimeInstance() demo");
out.printf(" LONG: %s%n", getTimeInstance(LONG).format(date));
out.printf(" MEDIUM: %s%n", getTimeInstance(MEDIUM).format(date));
out.printf(" SHORT: %s%n",getTimeInstance(SHORT).format(date));
}static void dateTimeInstanceDemo(Date date) {
out.println("getDateTimeInstance() demo");
out.printf(" LONG: %s%n",
getDateTimeInstance(LONG, LONG).format(date));
out.printf(" MEDIUM: %s%n",
getDateTimeInstance(SHORT, MEDIUM).format(date));
out.printf(" SHORT: %s%n",
getDateTimeInstance(SHORT, SHORT).format(date));
}
}
-
import java.util.;
import java.text.;public class HoeOld {
public static void main(String[] args) throws Exception {
System.out.print("输入出生年月日(yyyy-mm-dd):");
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date birthDate = dateFormat.parse(new Scanner(System.in).nextLine());
Date currentDate = new Date();
long life = currentDate.getTime() - birthDate.getTime();
System.out.println("你今年的岁数为:" +
(life / (365 * 24 * 60 * 60 * 1000L)));
}
}
-
import java.time.*;
import java.util.Scanner;
import static java.lang.System.out;public class HowOld2 {
public static void main(String[] args) {
out.print("輸入出生年月日(yyyy-mm-dd):");
LocalDate birth = LocalDate.parse(new Scanner(System.in).nextLine());
LocalDate now = LocalDate.now();
Period period = Period.between(birth, now);
out.printf("你活了 %d 年 %d 月 %d 日%n",
period.getYears(), period.getMonths(), period.getDays());
}
}
教材代码遇到的问题
在这个程序中,我明明是19周岁,却被误算为20周岁。。。
代码运行截图
这个周用在其他学科时间比较长,Java代码敲得比较少。