学习笔记分享---API

API

 全称: Application Progrmming Interface 应用程序的编程接口

在java.lang包下:

 基本数据类型、包装类
 字符串类     String StringBuffer StringBuilder
 比较器      Comparable接口 内部比较器和外部比较器
 枚举     Enum
 数学类    Math
 基类     Object  toString  equals  hashCode  getClass  finalize
 线程     Thread Runtime
 系统类    System
 异常     Throwable

在java.util包下
 输入         Scanner
 数组工具    Arrays
 日期和时间类型  Date  DateFomat Calendar
 随机类     Random UUID
 集合      Collection  List  Set  Map  ArrayList  LinkedList  HashSet  TreeSet  HashMap  Treemap  Collections

在java.io包下
    文件类

Math数学类
一个final类,不能被继承;
Math中所有的方法都是static,可以直接类名Math调用;
定义了与数学运算相关的方法。

类变量:
 Math.PI
 Math.E
类方法:
 Math.round() 四舍五入
 Math.abs() 绝对值
 Math.max() 最大值
 Math.random() 随机数 0.0 - – 0.1
在这里插入图片描述
大数据

   使用BigDecimal BigInteger工具进行超出java 基本数据类型范围的数字之间数学运算、比较运算、位运算
在这里插入图片描述
Enum 枚举
   一种特殊的类,用于表示一组常量

公有静态常量表示或者接口静态成员实现

	package com.etc.day14.api.enum1;
	public class DataBase {
		public static final String ORALCE_CONN="http://192.168.1.23:8080";
		public static final String USERNAME="root";
		public static final String PASSWORD="abc123";
}
	package com.etc.day14.api.enum1;
	public interface DbInterface {
			int MONDAY=1;//public static final
	}

定义常规的静态常量使用存在小问题:
 1.代码可读性差
 2.类型不安全
 3.耦合性高
 4.扩展性差

jdk1.5之后枚举概念
 要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译会报错!
语法
 访问修饰符  enum  枚举名{
   枚举值列表;
 }

	package com.etc.day14.api.enum1;
		public enum Day {
			MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
}

使用枚举值:

输出:

	Day day=Day.FRIDAY;
		System.out.println(day);//FRIDAY

switch:

	switch (day) {
	//int boolean String enum
		case FRIDAY:
		break;
		default:
		break;
}

枚举拓展

 enum 是Java公共基本类

 此类中还可以定义自己的方法

	public enum Color {
		RED("红色",1),GREEN("绿色",2),YELLOW("黄色",3);//The constructor Color() is undefined
	private String name;
	private int num;
//构造方法私有化,因此不能new;在列举枚举值时调用
	private Color(String name,int num) {
		this.name=name;
		this.num=num;
}
	public String getName(){
		return name;
}
	public static String getName(int num){
		return null;
}
}

注意:
1.枚举可以实现接口
2.不能有共有构造方法
3.所有枚举值都是public static final
4.enum覆盖了tostring方法
5.是一个不可被继承的final类

Random随机类

	Random rd=new Random();
		System.out.println(rd.nextInt());
		System.out.println(rd.nextDouble());
	Random rd1=new Random(20);
		System.out.println(rd1.nextInt(100));//产生一个0-100之间的整数,不包括100

种子数
 构造方法参数值,代表一个种子数,无参构造方法,默认当前系统时间毫秒数作为种子数!

	Random rd=new Random();
		for (int i = 0; i < 10; i++) {
				System.out.print(rd.nextInt(10)+" ");//7 1 5 0 9 9 4 5 8 6
			}
			System.out.println();
	Random rd1=new Random(20);
		for (int i = 0; i < 10; i++) {
				System.out.print(rd1.nextInt(10)+" ");//3 6 1 1 5 5 3 5 3 8
}
			System.out.println();
	Random rd2=new Random(20);
		for (int i = 0; i < 10; i++) {
				System.out.print(rd2.nextInt(10)+" ");//3 6 1 1 5 5 3 5 3 8
}

 一般计算机的随机数都是伪随机数,以一个真的随机数为种子作为一个初始条件,然后用一定算法不停
迭代产生随机数!

  

UUID

概述
 1. 通用的唯一识别码(Universally Unique Identifier),是唯一的机器生成的标识符!
 2. UUID 不能是人工生成
 3. UUID 16字节128位长的数字,通常是以36字节的字符表示
jdk1.5之后出现

应用
 1. UUID作为数据库数据表的主键
 2. 在分布式系统
 3. 交易ID(订单ID)
 4. 日志框架

生成

UUID uuid=UUID.randomUUID();
System.out.println(uuid);//bcb2e900-19ca-4c1a-909e-680bb5e5b131

使用

	public static void main(String[] args) {
		UUID uuid=UUID.randomUUID();//版本4方式生成UUID
			System.out.println(uuid);//bcb2e900-19ca-4c1a-909e-680bb5e5b131
		UUID uuid3=UUID.nameUUIDFromBytes(new byte[0]);
			System.out.println(uuid3);//版本3方式生成UUID
//输出版本号
			System.out.println(uuid.version());
//输出变体号
			System.out.println(uuid.variant());
			System.out.println(getUUID32());
}
	public static String getUUID32(){
		return UUID.randomUUID().toString().replace("-", "").toLowerCase();
}

  

Date时间类

 Date类 获取特点的一个瞬间,精确到毫秒   1000毫秒=1秒
 毫秒0点:时间原点:1970年1月1日 午夜0:00:00 (英国格林威治)
 中国时间原点:1970年1月1日 早上8:00:00
 格林威治标准时间(GMT)

创建

	Date d1=new Date();
//获取当前系统时间和日期
		System.out.println(d1);//Wed Mar 24 09:58:36 CST 2021 当前时间
/*
*构造方法参数:表示一个毫秒值 ,long类型
*具体时间原点的一个时间
*/
	Date d2=new Date(0);
		System.out.println(d2);//Thu Jan 01 08:00:00 CST 1970
	Date d3=new Date(1000L);
//Date d3=new Date(1000);
		System.out.println(d3);//Thu Jan 01 08:00:01 CST 1970
//通过构造方法参数,获取当前时间
		System.out.println(System.currentTimeMillis());
		System.out.println(new Date(System.currentTimeMillis()));//Wed Mar 24
10:08:13 CST 2021
//格林威治时间原点
	System.out.println(d1.toGMTString());//24 Mar 2021 02:10:45 GMT
	System.out.println(d2.toGMTString());//1 Jan 1970 00:00:00 GMT

常用方法

	Date date=new Date();
//date日期转换为毫秒值(距离时间原点的毫秒值)
	long time=date.getTime();
		System.out.println(time);//1616552102010
		System.out.println(System.currentTimeMillis());//1616552102010
//将日期对象设置到指定的毫秒值上
	Date date1=new Date();
		System.out.println(date1);//Wed Mar 24 10:17:01 CST 2021
	date1.setTime(0);//相当于 Date date=new Date(0)
		System.out.println(date1);//Thu Jan 01 08:00:00 CST 1970
//比较时间
	boolean sign=date.after(date1);
		System.out.println(sign);//trueSimpleDateFormat类
实现日期和字符串转换
时间类型转换为字符串类型
格式化日期(默认格式)
按照指定格式进行格式化日期
	String转换Date
	boolean sign2=date.before(date1);
		System.out.println(sign2);//false
	int result=date.compareTo(date1);
		System.out.println(result);//-1 1 0

SimpleDateFormat类
   作用: 实现日期和字符串转换

时间类型转换为字符串类型

//时间类型转换为字符串类型
	Date date=new Date();
	String ds=date.toString();
		System.out.println(ds.trim());//Wed Mar 24 10:24:53 CST 2021 字符串

格式化日期(默认格式)

//格式化日期(默认格式) 年后两位-月-日 上下午时-分
	SimpleDateFormat format=new SimpleDateFormat();
	String dateForm=format.format(date);
		System.out.println(dateForm.trim());//21-3-24 上午10:26

按照指定格式进行格式化日期

//按照指定格式进行格式化日期 年-月-日 时-分-秒
//y 年 M 月 d 日 H 时 m 分 s 秒
	SimpleDateFormat format2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E w W
F");
	String dateForm2=format2.format(date);
		System.out.println(dateForm2);//2021-03-24 10:47:26 星期三 13 4 4

String转换Date

//String转换Date
	String str="2021-03-20 15:30:10";
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	Date date=sdf.parse(str);//字符串--》时间
		System.out.println(date);//Sat Mar 20 15:30:10 CST 2021
//注意:格式样式必须和字符串样式保持一致


Calender类:  抽象类  设置或者获取时间使用

创建

//创建日历第一种方法
	Calendar cal=new GregorianCalendar();//cal对象放置所有当前系统时间相关的属性:毫秒
		System.out.println(cal.getWeekYear());
//设置时间
	cal.set(Calendar.YEAR, 2019);
	cal.set(Calendar.MONTH, 11);
	cal.set(Calendar.DAY_OF_MONTH, 22);
		System.out.println(cal);
//创建日历第二种方法
	Calendar cal1=Calendar.getInstance();
//calendar-->date
		System.out.println(cal1.getTime());//Wed Mar 24 13:19:39 CST 2021
		System.out.println(cal.getTime());//Sun Dec 22 13:20:01 CST 2019
//date-->calendar
	cal1.setTime(new Date());
		System.out.println(cal1.getWeekYear());


java.time包  时间处理一些类  jdk8新特性

获取时间
 LocalDate类

//设置日期
	LocalDate ld=LocalDate.of(2021, 2, 4);
		System.out.println(ld);//2021-02-04
		System.out.println(ld.getDayOfMonth());
		System.out.println(ld.getDayOfYear());//此日期在一年中第几天
		System.out.println(ld.lengthOfMonth());//28 日期当前月的总天数
		System.out.println(ld.isLeapYear());//false
//获取当前系统日期
	System.out.println(LocalDate.now());//2021-03-24

 LocalTime类

//设置时间
	LocalTime lt=LocalTime.of(22, 10, 59);
		System.out.println(lt);//22:10:59
		System.out.println(lt.getHour());//22
		System.out.println(lt.getMinute());//10
//获取当前系统的时间
		System.out.println(LocalTime.now());//15:57:23.126
		//Invalid value for SecondOfMinute (valid values 0 - 59): 62
	LocalTime lt1=LocalTime.of(22, 10, 62);
		System.out.println(lt1);

 LocalDateTime类

//设置日期时间
	LocalDateTime ldt=LocalDateTime.of(2020, 2, 14, 10, 10);
		System.out.println(ldt);//2020-02-14T10:10
	//LocalDateTime 转 LocalDate
	//LocalDateTime 转 LocalTime
	LocalDate ld=ldt.toLocalDate();
	LocalTime lt=ldt.toLocalTime();

 Instant类
  和date一样获取系统时间,获取美国时间

	Instant ist=Instant.now();
	System.out.println(ist);//2021-03-24T08:05:01.788Z


时间间隔
  Duration类
    用来衡量秒级或者纳秒级的时间间隔 例如“34.7秒”

	LocalDateTime ldt1=LocalDateTime.of(2021, 11, 15, 15, 0, 0);
	LocalDateTime ldt2=LocalDateTime.of(2021, 11, 15, 16, 10, 30);
		Duration d=Duration.between(ldt1, ldt2);
			System.out.println(d);//PT1H10M30S
			System.out.println(d.toMillis());//4230000
			System.out.println(d.toHours());//1
			System.out.println(d.toMinutes());//70

Period类
 用来衡量天 例如"3年4个月5天"

	LocalDate ldt1=LocalDate.of(2021,3, 2);
	LocalDate ldt2=LocalDate.of(2021,8, 26);
		//LocalDate ldt2=LocalDate.now();
		Period p=Period.between(ldt1, ldt2);
		System.out.println(p);//P4M9D
		System.out.println(p.getMonths()+"个月"+p.getDays()+"天");//4个月9天

注意:

   获取相差总天数,只能用Duration  !!!

 ChronoUnit类(枚举)
 时间单位
 between方法,计算时间间隔

	LocalDate ldt1=LocalDate.of(2021,3, 2);
	LocalDate ldt2=LocalDate.of(2023,8, 26);
		long year=ChronoUnit.YEARS.between(ldt1, ldt2);
			System.out.println(year);//2
			System.out.println(ChronoUnit.WEEKS.between(ldt1, ldt2));//129

例题:
  写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几?

解题思路:
 1.使用SimpleDateFormat来将输入的时间进行格式转化为Date格式
 2.使用Date初始化一个Calendar
 3.使用Calendar中的方法获得对应结果

public class test9 {
	public static void main(String[] args) throws ParseException {

	Scanner sc = new Scanner(System.in);
	SimpleDateFormat sd = new SimpleDateFormat();
		sd.applyPattern("yyyy年MM月dd日");
		System.out.println("请输入一个日期:");
	String time = sc.nextLine();
	Date dt = sd.parse(time);
	Calendar ca = Calendar.getInstance();
		ca.setTime(dt);
	GregorianCalendar g = new GregorianCalendar();
		if(g.isLeapYear(ca.get(Calendar.YEAR))){
			System.out.println(ca.get(Calendar.YEAR)+"年是闰年");
		}else{
			System.out.println(ca.get(Calendar.YEAR)+"年不是闰年");
}
	System.out.println("这一个月有"+ ca.getActualMaximum(Calendar.DATE) +"天");
	System.out.println("这一天是周"+ (ca.get(Calendar.DAY_OF_WEEK)-1));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值