赞
踩
JDK1.5的新特性
自动拆装箱 , 泛型 , 增强for , 可变参数 , 枚举
就是一个类只能存在几个固定的对象,那么这个就是枚举.我们就可以使用这些对象可以表示一些固定的值。
举例:一周只有7天,一年只有12个月等。
int ordinal() 返回枚举项的序号
int compareTo(E o) 比较两个枚举项的 返回的是两个枚举项序号的 差值
String name() 获取枚举项的名称
String toString()获取枚举项的名称
<T> T valueOf(Class<T> type,String name) 用来获取指定的枚举项 参数1:枚举类对应的字节码对象 参数2 枚举项的名称
values() 获取所有的枚举项
package com.练习.枚举类; public class Demo1 { public static void main(String[] args) { demo behind = demo.BEHIND; demo front = demo.FRONT; demo left = demo.LEFT; demo right = demo.RIGHT; System.out.println(behind.ordinal());//返回枚举项的序号 System.out.println(front.compareTo(left));//比较两个枚举项的 返回两个枚举项的序号差值 System.out.println(left.name());//返回枚举项的名称 //获取指定的枚举项 demo right1 = demo.valueOf(demo.class, "RIGHT"); System.out.println(right1); //获取所有的枚举项 demo[] values = demo.values(); for (demo value : values) { System.out.println(value); } } } enum demo{ FRONT,BEHIND,LEFT,RIGHT; }
package com.westmo3.demo2; import java.util.Arrays; import java.util.Comparator; public class MyDemo8 { public static void main(String[] args) { Integer arr[]={12,9,23,11,34,10}; Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1-o2; } }); Integer arr1[]={12,9,23,11,34,10}; //上面的代码有Lambda表达式一行就完成了 Arrays.sort(arr1,(o1,o2)->o1-o2); System.out.println(Arrays.toString(arr1)); System.out.println(Arrays.toString(arr)); } }
package com.westmo3.demo2; public class MyDemo9 { public static void main(String[] args) { new Myinterface() { @Override public void test() { System.out.println("123"); } }.test(); //lambda表达式实现 Myinterface myinterface=()-> System.out.println("123"); myinterface.test(); } } @FunctionalInterface //修饰函数式接口的,要求接口中的抽象方法只有一个 interface Myinterface{ void test(); }
JDK1.8之前,关于时间日期的API线程是不安全的,1.8之后,新的时间日期API是线程安全的。针对日期提供了三个类。
1.与获取相关的方法:get系类的方法 ldt.getYear();获取年 ldt.getMinute();获取分钟 ldt.getHour();获取小时 getDayOfMonth 获得月份天数(1-31) getDayOfYear 获得年份天数(1-366) getDayOfWeek 获得星期几(返回一个 DayOfWeek枚举值) getMonth 获得月份, 返回一个 Month 枚举值 getMonthValue 获得月份(1-12) getYear 获得年份 2.格式化日期日期字符串的方法 format() 3.转换的方法 toLocalDate();toLocalTime(); 4.判断的方法 isAfter()判断一个日期是否在指定日期之后 isBefore()判断一个日期是否在指定日期之前 isEqual(); 判断两个日期是否相同 isLeapYear()判断是否是闰年注意是LocalDate类中的方法 5.解析的静态方法parse() 6.添加年月日时分秒的方法 plus系列的方法 都会返回一个新的LocalDateTime的对象 LocalDateTime localDateTime = ldt.plusYears(1); LocalDateTime localDateTime1 = ldt.plusMonths(3); LocalDateTime localDateTime2=ldt.plusHours(10); 7.减去年月日时分秒的方法 minus 系列的方法 注意都会返回一个新的LocalDateTime的对象 8.指定年月日时分秒的方法 with系列的方法 注意都会返回一个新的LocalDateTime的对象 例如 LocalDateTime localDateTime3 = ldt.withYear(1998); //获取这个月的第几个星期几是几号,比如 TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY) 代表的意思是这个月的第二个星期五是几号
案例演示
package com.westmo3.demo3; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; public class MyDemo6 { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now();//获取当前时间 年月是分秒 System.out.println(now); LocalDateTime of = LocalDateTime.of(2020, 3, 9, 21, 37, 2);//指定日期 System.out.println(now.getYear());//获取当前年份 //日期格式化 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-DD HH:mm:ss"); System.out.println(now.format(dateTimeFormatter)); //判断两个日期的前后关系 LocalDate now1 = LocalDate.now(); LocalDate of1 = LocalDate.of(2020, 3, 2); System.out.println(of1.isBefore(now1));//判断一个日期是否在另一个日期之前 System.out.println(of1.isAfter(now1));//判断一个日期是否在另一个日期之后 //解析日期 String data="2020年03月03日"; DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); System.out.println(LocalDate.parse(data, dateTimeFormatter1)); System.out.println(now1.plusMonths(3));//给当前日期增加时间量 //TemporalAdjusters工具类,提供了一些获取特殊日期的方法 LocalDate with1 = now1.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.FRIDAY));//这个月的第二个星期五是几号 System.out.println(with1); } }
1获取对象的方法 now() 注意默认获取出来的是当前的美国时间和我们相差八个小时 我们在东八区 所以可以加8个小时 就是我们的北京时间 2. Instant中设置偏移量的方法:atOffset() 设置偏移量 3.获取系统默认时区时间的方法atZone(),方法的参数是要一个时区的编号可以通过时区编号类获取出来,ZoneId.systemDefault()获取本地的默认时区ID 4.get系列的方法 getEpochSecond() 获取从1970-01-01 00:00:00到当前时间的秒值 toEpochMilli();获取从1970-01-01 00:00:00到当前时间的毫秒值 getNano()方法是把获取到的当前时间的秒数 换算成纳秒 long epochSecond = ins.getEpochSecond();//获取从1970-01-01 00:00:00到当前时间的秒值 getNano()方法是把获取到的当前时间的豪秒数 换算成纳秒 比如当前时间是2018-01-01 14:00:20:30 那就把30豪秒换算成纳秒 int nano = ins.getNano(); 5. ofEpochSecond()方法 给计算机元年增加秒数 ofEpochMilli() 给计算机元年增加毫秒数 单位换算 0.1 毫秒 = 10 的5次方纳秒 = 100000 纳秒 1 毫秒 = 1000 微妙 = 1000000 纳秒
案例演示
package com.westmo3.demo3; import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneOffset; public class MyDemo7 { public static void main(String[] args) { //获取从1970-01-01 00:00:00到当前时间的秒值 Instant now = Instant.now(); System.out.println(now);//获取的是默认时区 OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));//增加偏移量 获取到的就是当前时区 System.out.println(offsetDateTime); System.out.println(now.getEpochSecond());获取从1970 -01 - 01 00:00:00 截止到当前时间间隔的秒值 //给计算机元年增加毫秒数 Instant instant = Instant.ofEpochMilli(1000 * 60 * 60 * 24); System.out.println(instant); } }
package com.westmo3.demo3; import java.time.Duration; import java.time.Instant; import java.time.LocalDate; import java.time.Period; public class MyDemo8 { public static void main(String[] args) { Instant now = Instant.now(); for (int i = 0; i < 1000; i++) { System.out.println(i); } Instant now1 = Instant.now(); Duration between = Duration.between(now, now1);//计算两个时间之间的间隔 System.out.println(between.toMillis());//将结果转换为毫秒值 LocalDate now2 = LocalDate.now(); LocalDate of = LocalDate.of(1998, 01, 05); Period between1 = Period.between(of,now2);//计算两个日期之间的间隔 System.out.println(between1.getYears());//计算间隔了多少年 } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。