学习笔记——API
一、学习重点

二、学习内容
日期工具类
public class DateUtils { public static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS"); public static final String dateToString(Date date){ return SDF.format(date); } public static final Date StringToDate(String dateStr) throws ParseException { return SDF.parse(dateStr); } }
练习题
import java.util.Date; /* 使用Date类 打印输出7天以后的日期和时间 */ public class Demo01 { public static void main(String[] args) { Long now = System.currentTimeMillis(); //一天是86,400,000ms int sevenDays = (86400000*7); Date date = new Date(now+sevenDays); System.out.println(date); } }
三、笔记内容
Java的值传递和所谓的引用传递
本质上Java只有值传递,所有的赋值传参都是一次值的拷贝
引用数据类型拷贝就是引用地址,基本数据类型拷贝的是值,不会传入实例
常用api 网站:聚合数据
API(Application Programing Interface)应用程序接口。
JDK给我们提供的一些已经写好的类,我们可以直接调方法来解决问题
我们类的方法在宏观上都可以称为接口.
api文档:介绍api
时间相关api
时间:
格林尼治天文台:伦敦
时区:东八区
北京时间,+8
时间戳:格林尼治时间 1970.1.1 00:00:00 到今天 2022.7.28 9:30:00 的毫秒数 1s=1000ms
Ch12.currentTimeMillis()
System.out.println(System.currentTimeMillis());//时间戳
日期类
Date
public static void main(String[] args) { //获取系统当前日期 Date date = new Date(); System.out.println(date); long millis = System.currentTimeMillis(); System.out.println(millis); date = new Date(1658974484672L); System.out.println(date); }
日历类:日期时间
Calendar是一个抽象类,不能创建对象
初始化:
提供了一组对年月日时分秒星期等信息的操作函数,操作不同时区的信息
JDK1.1版本开始,在处理时间和日期时,系统推荐使用Calendar类
Calendar要比Date强大很多
public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); //多态,向上转型 父 父 = new 子(); System.out.println(calendar.get(Calendar.YEAR)); System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1);//中国 System.out.println(calendar.get(Calendar.MONTH)+1);//中国 System.out.println(calendar.get(Calendar.MILLISECOND)); }
时间区域转换
public static void main(String[] args) { System.out.println(TimeZone.getDefault());//Asia/Shanghai 编程界:上海时间 System.out.println(new Date()); Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("GMT-8:00")); System.out.println(calendar.get(Calendar.HOUR)); }
ZoneId
public static void main(String[] args) { ZoneId zoneId = ZoneId.of("America/New_York"); System.out.println(TimeZone.getTimeZone(zoneId)); }
日期格式化
SimpleDateFormat
format:格式化Date类型,把Date类型转成String类型
展示数据到客户端
parse:把String类型的时间,转成Date类型
从客户端传过来的时间,一般都是String类型,存入数据库
yyyy:年
yy:年的后两位
MM:月
dd:日
HH:小时 24小时制
hh:小时 12小时制
mm:分
ss:秒
SSS:毫秒
public static void main(String[] args) { Date date = new Date(); System.out.println(date); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS"); String s = sdf.format(date); System.out.println(s); }
JDK8的日期时间类
在JDK8之前,处理日期和时间,基本上就是用我们上面的几个类
Date和Calendar,获取的月份都是0-11,而不是1-12
阿里巴巴规约明确要求:
如果是jdk8的应用,可以使用Instant来代替Date
LocalDateTime代替Calendar
DateTimeFormatter代替SimpleDateFormat
新的时间类
Instant
LocalDate
LocalTime
LocalDateTime
DateTimeFormatter
public static void main(String[] args) { Instant instant = Instant.now(); System.out.println(instant.atZone(ZoneId.systemDefault()));//atZone 获取当前时间上海时间 System.out.println(instant.getEpochSecond());//获取秒数 System.out.println(instant.toEpochMilli());//获取毫秒数 //时间戳 long mills = System.currentTimeMillis(); System.out.println(Instant.ofEpochMilli(mills)); System.out.println("--------------------------------------------"); String text = "2020-07-28T14:06:50.147Z"; Instant parse = Instant.parse(text); System.out.println(parse); }
持续时间Duration
public static void main(String[] args) { Instant instant = Instant.now(); Instant plus = instant.plus(Duration.ofDays(5)); System.out.println(plus); }
LocalDate:获取当前的日期
public static void main(String[] args) { LocalDate now = LocalDate.now(); System.out.println(now); System.out.println(now.getMonth()); System.out.println(now.getDayOfWeek()); System.out.println(now.getDayOfMonth()); LocalDate of = LocalDate.of(2024, 9, 10); System.out.println(of); //判断是否为润年 //能被4整除被400整除不被100整除 System.out.print(of.isLeapYear()); }
LocalTime:本地时间
public static void main(String[] args) { LocalTime now = LocalTime.now(); System.out.println(now); }
LocalDateTime:获取日期和时间
public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); System.out.println(now); }
DateTimeFormatter:处理日期的格式化问题
public static void main(String[] args) { LocalDate now = LocalDate.now(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); System.out.println(now.format(dateTimeFormatter)); }
Instance和Date的转换
Instance和LocalDate的转换
Date和LocalDateTime
public static void main(String[] args) { Instant instant = Instant.now(); // 把Instant转成Date Date date = Date.from(instant); // 把Date转成Instant Instant toInstant = date.toInstant(); // 把Instant转成LocalDateTime LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); // 把LocalDateTime转成Instant Instant instant1 = LocalDateTime.now().toInstant(ZoneOffset.UTC); // 把date转成LocalDateTime Date date1 = new Date(); Instant instant2 = date.toInstant(); LocalDateTime localDateTime1 = LocalDateTime.ofInstant(instant2, ZoneId.systemDefault()); // 把LocalDateTime转成Date LocalDateTime now = LocalDateTime.now(); Instant instant3 = now.atZone(ZoneId.systemDefault()).toInstant(); Date date2 = Date.from(instant3); }
数学类Math
随机数 random() double
向上取整 ceil() double
向下取整 floor()double
四舍五入 rand() long
public static void main(String[] args) { //生成0-1的随机数 //(int)(Math.random()*(max-min)+min) System.out.println(Math.random()); }
BigDecimal 统计类
public static void main(String[] args) { double b1 = 0.5; double b2 = 0.9; BigDecimal bigDecimal1 = new BigDecimal(b1); BigDecimal bigDecimal2 = new BigDecimal(b2); //使用BigDecimal的构造器,开发中,传入的参数必须是字符串 BigDecimal bigDecimal3 = new BigDecimal("0.5"); BigDecimal bigDecimal4 = new BigDecimal("0.9"); System.out.println(bigDecimal3.add(bigDecimal4)); }
随机
Random
public static void main(String[] args) { Random random = new Random(); System.out.println(random.nextInt(10));//获取10以内随机数
}
Arrays 数组的工具类
public static void main(String[] args) { int [] arr = new int[]{1,2,3,4,5}; System.out.println(Arrays.toString(arr)); Arrays.sort(arr); System.out.println(Arrays.binarySearch(arr, 4)); int [] ints = Arrays.copyOf(arr,2); System.out.println(Arrays.toString(ints)); }
System类:系统类
public static void main(String[] args) { // System.exit(-1); // System.out.println(); // System.err.println("错误信息"); // System.currentTimeMillis(); Properties properties = System.getProperties(); System.out.println(properties); }
Object
public static void main(String[] args) { System.out.println(Objects.isNull("as"));//判断是不是空 }
StringBuffer和StringBuilder
/** * StringBuffer和StringBuilder * 可变的字符序列,和String是有本质区别的 * * String怎么反转??? * * StringBuffer是同步的。安全,效率低 * StringBuilder是异步的。不安全。效率高 * * 面试题: * 三个字符串的区别? */ public class Ch14 { public static void main(String[] args) { StringBuffer stringBuffer = new StringBuffer("你好"); // System.out.println(stringBuffer); stringBuffer.append(",我好").append(",大家好"); // System.out.println(stringBuffer); // stringBuffer.delete(4,7); // stringBuffer.deleteCharAt(0); // stringBuffer.insert(1,"哈哈"); stringBuffer.reverse(); System.out.println(stringBuffer); // String str = "hello"; // String s = str.concat(",world!!"); // System.out.println("str = " + str); // System.out.println("s = " + s); } }

浙公网安备 33010602011771号