2022 07 28 第三小组 陈迪 学习笔记
作者:互联网
Java的值传递和所谓的引用传递
本质上Java只有值传递,所有的赋值传参都是一次值的拷贝。
引用数据类型拷贝的就是引用地址,基本数据类型拷贝的是值,不会传入实例对象。
常用api
API(Application Programming Interface)应用程序接口。
JDK给我们提供的一些已经写好的类,我们可以直接调方法来解决问题。
我们类的方法,在宏观上都可以称为接口。
api文档,介绍api
时间相关api
- 2个字段(注册时间,最后一次修改时间)
- 时间:
- 格林尼治天文台,伦敦
- 时区:东八区
- 北京时间:+8
- 时间戳:1970.1.1 00:00:00 到今天2022.7.28 9:29:30的毫秒数
- 1s=1000ms 1min=60s 1h=60min 1day=24h 时间戳在全国各地都是固定的。
- 获取时间戳
- 可以通过时间戳转换成我们当前所在地的具体时间和日期
日期类
/*
* date
*/
public class Ch03 {
public static void main(String[]args){
//获取系统当前日期时间
Date date= new Date();
System.out.println(date);
}
}
当返回负数时,说明调用者时间是在参数时间之前。
当返回0时,调用者时间和参数时间相同。
当返回正数时,说明调用者时间在阐述时间之后。
public class Ch04 {
public static void main(String[] args) {
Date date1=new Date();
Date date2=new Date();
System.out.println();
}
}
日历类:日期
- Calendar是一个抽象类。
- 初始化:
- 提供了一组对“年月日时分秒星期”等信息的操作函数。操作不同时区的信息。
- Calendar要比Date强大的多
时区:偏移量
public class Ch06 {
public static void main(String[] args) {
System.out.println(TimeZone.getDefault());
System.out.println(new Date());
}
}
日期格式化
- simpleDateFormat
- format:格式化Date类型,把Date类型转成String类型
- 从客户端传过来的时间,一般都是String类型,存入数据库。
public class Test {
public static void main(String[] args) {
Date date=new Date(System.currentTimeMillis()+1000*60*60*24*7);
System.out.println(date);
}
}
设计一个工具类
对date类型的日期进行格式化,转成string
format方法 参数是Date 返回值是String
string格式化转换成Date
parse方法 参数是string 返回值是Date
public class Test1 {
public static final String dateToString(){
return dateToString();
}
public static final Date StringToDate() {
return StringToDate();
}
}
JDK8的日期时间类
- 在JDK8之前,处理日期和时间,基本上就是用上面的几个类。
- Date和Calendar,获取到的月份都是0-11,而不是我们生活中的1--12;
阿里巴巴规约明确要求:
- 如果是JDK8的应用,可以使用
- Instant代替Date
- LocalDateTime代替Calendar
- DateTimeFormatter代替DateTimeFormat
新的实践类:
- Instant
- LocalTime
- LocalDateTime
- DateTimeFormatter
- atzone 在某一个时区
public class Ch01 {
public static void main(String[] args) {
Instant instant=Instant.now();
System.out.println(instant.atZone(ZoneId.systemDefault()));
System.out.println(instant.getEpochSecond());
System.out.println(instant.toEpochMilli());
long millis=System.currentTimeMillis();
System.out.println(Instant.ofEpochMilli(millis));
System.out.println("---------------------------------");
String text="2022.07.28 12:23:21";
Instant parse=Instant.parse(text);
System.out.println(parse);
}
}
持续时间Duration
LocalDate:获取当前日期
public class Ch03 {
public static void main(String[] args) {
LocalDate now=LocalDate.now();
System.out.println(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(2022,9,10);
System.out.println(of);
}
}
public class Ch04 {
public static void main(String[] args) {
Instant instant=Instant.now();
Date date=Date.from(instant);
LocalDateTime localDateTime= LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
}
}
math数学类
- random()随机数
- ceil()向上取整
- floor()向下取整
- round()四舍五入
BigDecimal统计类
public class Ch06 {
public static void main(String[] args) {
BigDecimal bigDecimal=new BigDecimal("0.7");
BigDecimal bigDecimal1=new BigDecimal("0.1");
//使用BigDecimal的构造器,开发中,传入的参数必须是字符串
System.out.println(bigDecimal.add(bigDecimal1));
}
}
Random 随机
public class Ch07 {
public static void main(String[] args) {
Random random=new Random();
System.out.println(random.nextInt(21));
}
}
Arrays数组的工具类
public class Ch08 {
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));
}
}
Objects
public class Ch09 {
public static void main(String[] args) {
System.out.println(Objects.isNull(""));//阿里规约判断空
}
}
StringBuffer和StringBuilder
-
可变的字符序列,和String是有本质区别的;
-
有缓冲区,从缓存里拿东西
用法一模一样
-
StringBuffer是同步的。安全,效率低。
-
StringBuilder是异步的。不安全,同时处理多个请求。
-
做开发三大准则:成本,质量,进度。
面试题:三个字符串的区别?
标签:07,28,System,陈迪,Date,String,println,public,out 来源: https://www.cnblogs.com/cd01106118/p/16530983.html