2022-7-28 第八组曹雨 时间工具类的讲解
Java的值传递和引用传递。
本质上Java只有值传递,所有的赋值传参都是一次值的拷贝
引用数据类型拷贝的就是引用地址,基本数据类型拷贝的事情,不会传入实例
public class Ch01 {
private String name;
public Ch01 (String name){
this.name=name;
}
public static void change(Ch01 ch01){
ch01 = new Ch01("jjj");
}
@Override
public String toString() {
return "Ch01{" +
"name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
Ch01 ch01 = new Ch01("222");
System.out.println(ch01);
}
}
输出
Ch01{name='222'}
方法中如果没有返回值,主方法调用以后无法做出改变。
如果
ch01 = new Ch01("jjj");
改为:
Ch01.name = "jjj"/Ch01.setName("jjj");
那么输出就会改编为jjj。
只要是看见了 new,就是一个新的地址。
常用API
API( Application Program Interface 应用程序接口)
JKD给我提供一些已经写好的类,我们可以直接调方法来解决问题
例如String 就是一个API接口。
我们类的方法,在宏观上都可以称为类的接口。
API文档:介绍API】=
时间戳:
//时间相关api
涉及时区
中国:东八区
北京时间 格林尼治时间
时间戳::1970.1.1.00:00:00 到此时此刻的毫秒数。
1s = 1000ms,时间戳在全世界都是固定的,它是以格林尼治时间而定的,可以忽略时区的限制。
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
日期类:
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
}
}
Calendar日历类:
可以看日期,时间
Calendar是一个抽象类,它不能创建对象,但是他提供了一组,对年月日,时分秒,星期等的操作函数。还可以操作不同时区的时间。
处理时间和日期时,推荐使用日历类(Calender)
创建:
public static void main(String[] args) {
/* Date date = new Date();
long dateNow = System.currentTimeMillis();
long dateAfter = System.currentTimeMillis()+7*24*60*60*1000;
date.setTime(dateAfter);
System.out.println(date);*/
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(calendar.YEAR));
System.out.println(Calendar.DAY_OF_MONTH);
……………………
}
}
时区类:
TimeZone:表示时区的偏移量
public class Ch07 {
public static void main(String[] args) {
System.out.println(TimeZone.getDefault());
System.out.println(new Date());
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT-08:00"));
System.out.println(calendar.get(Calendar.HOUR));
}
}
日期格式化
public class C04 {
/*日期格式化
* */
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
/*yyyy年
* yy年的后两位
* MM月
* dd日
* HH小时 24小时制
* hh 小时 12小时制
* mm 分
* ss 秒
* SSS 毫秒*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm");
//格式化日期,把Date类型转换成String类型
String s = sdf.format(date);
System.out.println(s);
}
写一个工具类
public final class DateUntils {
public String dataToString(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm");
return sdf.format(date);
}
public Date stringToDate(String dateStr)throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 hh:mm");
return sdf.parse(dateStr);
}
- 1.类要不要流口
- 2.方法要不要加final
- 3.一般方法不需要扩展,方法需要扩展
- 4.工具类,方法一定要有返回值
- 5.工具类都是静态
持续时间
返回一个新的值,原来的永远不变
public class P02 {
public static void main(String[] args) {
Instant instant= Instant.now();
Instant plus = instant.plus(Duration.ofMillis(5));
System.out.println(plus);
}
}
LocaDate:获取当前日期
public class P3 {
public static void main(String[] args) {
System.out.println(LocalDate.now());
}
}
LocalDateTime:获取日期和时间
public class Ch05 {
public static void main(String[] args) {
System.out.println(LocalDateTime.now());
}
}
DateTimeFormatter: 处理日期的格式化问题
public class Ch06 {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
System.out.println(now.format(dateTimeFormatter));
}
}
在Java1.5中加入了泛型
面试题:
String
StringBuffer
StingBuilder
三者的区别:
- String 定义出来的是一个常量,一旦定义了就不可以改变,而StringBuffer和StringBuilder作为“可变字符串是可以改变的”
- StringBuffer是同步处理,只能同时做一件事,效率低,但是安全性高
而StingBuilder是异步处理,可以同时做很多件事情,效率高,相应的安全性低
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】