学习笔记——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);
    }
}

 

 

 

 

posted @ 2022-07-28 23:01  LJMMJL  阅读(41)  评论(1)    收藏  举报