API:
1.什么是API:
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
——百度百科
API(Application Programming Interface),即应用程序编程接口
2.如何使用API
a.界面介绍:
b.描述
c.构造方法:
d.成员方法:
2.常用API
API(Application program Interface )应用程序接口
- JDK给我们提供的一些已经写好的类,我们可以直接调方法来解决问题
- 我们类的方法,在宏观是都可以称为接口。
2.1时间API
时间戳:1970.1.1 00:00:00 (格林尼治时间)到今天的毫秒数(在全世界都是固定的)
//获取时间戳
long l = System.currentTimeMillis();
2.2日期类(Date)
Date date=new Date(1658974879083l);
Date date1 = new Date();
System.out.println(date.compareTo(date1));
//当返回负数时 调用者时间是在参数时间之前
System.out.println(date.compareTo(date));
//当返回0时 调用者时间与参数时间相同
System.out.println(date1.compareTo(date));
//当返回正数时 调用者时间是在参数时间之后
2.3日历类(Calendar)
Calendar是一个抽象类,不能初始化
- 提供了一组对“年月日时分秒星期”等信息的操作函数。操作不同的时区的信息。
- JDK1.1版本开始,在处理时间和日期是,系统推荐使用Calendar类。(Calendar比Date强大的多)
2.4时区类(TimeZone)
-
Calendar calendar = new GregorianCalendar(); //向上转型 Calendar instance = Calendar.getInstance(); //向上转型 System.out.println(instance.get(Calendar.DAY_OF_WEEK)); //获取当前时区id System.out.println(TimeZone.getDefault()); //设置时区 calendar.setTimeZone(TimeZone.getTimeZone("GMT-8:00")); System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
2.5日期格式化(SimpleDateFormat)
-
format方法 :格式化Date类型 把Date转换成String
-
String s = format.format(new Date()); System.out.println(s);
-
-
pares方法 :把String类型转换成Date类型---从客户端传过来的时间参数都是String类型,存入数据库
-
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-dd HH-mm-ss"); Date parse = null; try { parse = simpleDateFormat.parse(str); } catch (ParseException e) { System.out.println("请按格式输入(YYYY-MM-dd HH-mm-ss)"); }
-
2.6日期时间类(JDK8)
- Instant
- LocalDate
- LocalTime
- LocalDateTime
- DateTimeFormatter
2.6.1 Instant类
Instant now = Instant.now();
//获得当前时区的时间
System.out.println(now.atZone(ZoneId.systemDefault()));
//获得1970到现在的毫秒数
System.out.println(now.toEpochMilli());
long l = System.currentTimeMillis();
//把时间戳转换成时间
System.out.println(Instant.ofEpochMilli(l));
//把字符串转换成时间
String s="2022-07-28T06:06:33.324Z";
Instant parse = Instant.parse(s);
System.out.println(parse);
//在当前时间下进行加天,月,年-----返回新的对象
System.out.println(now.plus(Duration.ofDays(7)));
System.out.println(now);
2.6.2 LocalDate类
LocalDate now = LocalDate.now();
//输出日期
System.out.println(now); //2022-07-28
//指定日期
LocalDate of = LocalDate.of(1028, 9, 10);//2022-09-10
System.out.println(of);
//判断是不是闰年
System.out.println(of.isLeapYear());
2.6.3LocalTime类
LocalTime now = LocalTime.now();
System.out.println(now);
2.6.4LocalDateTime类
LocalDateTime now = LocalDateTime.now();
System.out.println(now); //2022-07-28T14:23:27.550674400
2.6.5DateTimeFormatter类
- 单例模式——效率高
2.7数学类(Math)
里边的方法都是静态方法,调用时直接类名.方法名
//1~100随机数
System.out.println((int) (Math.random() * (100-1)+1));
ceil() //向上取整
floor() //向下取值
round() //取整
2.8统计类(BigDecimal)
Double d1=0.1;
Double d2=0.7;
System.out.println(d1+d2); //0.7999999999999999
BigDecimal bigDecimal = new BigDecimal(d1);
BigDecimal bigDecimal3 = new BigDecimal(d2); System.out.println(bigDecimal.add(bigDecimal3));//0.7999999999999999611421941381195210851728916168212890625
BigDecimal bigDecimal1 = new BigDecimal("0.1");
BigDecimal bigDecimal2 = new BigDecimal("0.7");
System.out.println(bigDecimal1.add(bigDecimal2));//0.8
2.9随机类(Random)
Random random = new Random();
//0~110的整数随机数---伪随机数
System.out.println(random.nextInt(110));
2.10数组工具类(Arrays)
int[] integers = new int[]{1,2,3,4,5};
//二分法查找
System.out.println(Arrays.binarySearch(integers,4));
//数组拷贝
int[] ints=Arrays.copyOf(integers,22);
//数组排序
Arrays.sort(integers);
2.11系统类(System)
//强制退出
System.exit(-1);
//错误信息
System.err.println("的撒法");
//时间戳
System.out.println(System.currentTimeMillis());
//键值对集合
Properties properties = System.getProperties();
System.out.println(properties);
2.12方法类(Objects)
- JDK1.7
//判断是不是空
System.out.println(Objects.isNull(""));
2.13可变的字符序列(StringBuffer)
同步的——
- 缺点:效率低
- 优点:安全
StringBuffer stringBuffer=new StringBuffer("尼斯");
//不可以用=赋值
System.out.println(stringBuffer); //尼斯
//追加
System.out.println(stringBuffer.append(",我好").append("大家好"));//尼斯,我好大家好---在原有的追加
System.out.println(stringBuffer);//尼斯,我好大家好
//追加
String s="hello";
System.out.println(s.concat(",wor"));//生成了一个新的变量
System.out.println(s);
System.out.println(stringBuffer.delete(4,6));//不包含终止位置
stringBuffer.deleteCharAt(0); //单个删除
stringBuffer.reverse(); //反转
2.14可变的字符序列(StringBuilder)
功能与StringBuffer相同
区别
- 异步的——
- 缺点:不安全
- 优点:效率高
开发三大准则:成本——质量——进度~~~~进度——进度——进度
面试题:三个字符串的区别 :