当前位置: 首页 > web >正文

Java常见API文档(下)

在这里插入图片描述
格式化的时间形式的常用模式对应关系如下:
在这里插入图片描述

空参构造创造simdateformate对象,默认格式

练习.按照指定格式展示

在这里插入图片描述

package kl002;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Date3 {public static void main(String[] args) throws ParseException {String str = "2000-11-11";SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf1.parse(str);SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");String result = sdf2.format(date);System.out.println(result);}
}

运行结果:
2000年11月11日

细节:SimpleDateFormat 是 Java 中用于处理日期格式化和解析的类,位于 java.text 包下。它允许你将日期对象(如 java.util.Date 或 java.util.Calendar)按照指定的模式格式化为字符串,也可以将字符串解析为日期对象。
基本用法

  1. 格式化日期(Date → String)
  2. 解析字符串(String → Date)
  3. 注意事项
    线程不安全
    SimpleDateFormat 不是线程安全的,在多线程环境下使用时需要注意同步问题,建议每个线程单独创建实例。
    时区和语言环境
    默认使用系统时区和语言环境,可通过 setTimeZone() 和构造函数指定:
    4.异常处理
    解析字符串时可能抛出 ParseException,必须进行异常处理。
    替代方案(Java 8+)
    Java 8 引入的 java.time 包(如 LocalDateTime、DateTimeFormatter)提供了更现代化、线程安全的日期时间 API:

练习.秒杀活动

在这里插入图片描述

package kl002;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleDateFormateDemo1 {public static void main(String[] args) throws ParseException {//比较两个时间//解析时间得到毫秒值String startstr = "2023年11月11日 0:0:0";String endstr = "2023年11月11日 0:10:0";String orderstr = "2023年11月11日 0:01:0";SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//解析上面三个时间,得到Date对象Date startDate = sdf.parse(startstr);Date endDate = sdf.parse(endstr);Date orderDate = sdf.parse(orderstr);//得到三个时间的毫秒值long startTime = startDate.getTime();long endTime = endDate.getTime();long orderTime = orderDate.getTime();//判断if (orderTime >= startTime && orderTime <= endTime) {System.out.println("参加秒杀活动成功");} else {System.out.println("参加秒杀活动失败");}}
}

运行结果:
参加秒杀活动成功

总结

在这里插入图片描述

Calender

Calender概述
在这里插入图片描述
细节:Calender是一个抽象类,不能直接创建对象
Calender常用方法
在这里插入图片描述
细节:
月份:范围0-11,如果获取出来的是0,那么实际上是1月

总结

在这里插入图片描述

  1. 获取 Calendar 实例
  2. 获取和设置日期字段
  3. 日期计算
  4. 与 Date 类互转
    5.格式化输出
    通常结合 SimpleDateFormat 或 Java 8+ 的 DateTimeFormatter 使用
    注意事项
    月份从 0 开始
    Calendar.JANUARY 到 Calendar.DECEMBER 的值是 0 到 11,设置和获取月份时需要注意。
    线程安全
    Calendar 类不是线程安全的,多线程环境下需注意同步问题。
    Java 8+ 推荐使用 java.time 包
    Java 8 引入的 java.time 包(如 LocalDateTime、ZonedDateTime)提供了更简洁、线程安全的 API
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    自动装箱:把基本数据类型自动变成其对应的包装类
    自动拆箱:把包装类自动变成其对象的基本数据类型

JDK5以后:int和Integer可以看作是同一个东西,因为在内部可以自动转化

包装类.总结

在这里插入图片描述
在这里插入图片描述
以后要进行键盘录入,统一使用nextline
特点:遇到回车才结束

练习.键盘录入

在这里插入图片描述

package kl003;import java.util.ArrayList;
import java.util.Scanner;public class Test1 {public static void main(String[] args) {//1.创建一个集合用来添加整数ArrayList<Integer> list = new ArrayList<>();//2.键盘录入整数添加到集合当中Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入一个整数:");String numStr = sc.nextLine();int num = Integer.parseInt(numStr);//3.过滤异常数据if (num < 1 || num > 100) {System.out.println("输入的数字超出范围,请重新输入");continue;}list.add(num);int sum = getSum(list);if (sum > 200){System.out.println("集合中的所有的数据和已经满足需求");break;}}for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i) + " ");}}private static int getSum(ArrayList<Integer> list) {int sum = 0;for (int i = 0; i < list.size(); i++) {int num = list.get(i);sum = sum + num;}return sum;}
}

运行结果:
请输入一个整数:
1
请输入一个整数:
50
请输入一个整数:
10
请输入一个整数:
100
请输入一个整数:
50
集合中的所有的数据和已经满足需求
1
50
10
100
50
细节与代码总结:
//1.创建一个集合用来添加整数
//2.键盘录入整数添加到集合当中
//3.过滤异常数据

练习.算法水题

在这里插入图片描述

package kl003;public class Test2 {public static void main(String[] args) {//定义一个字符串String str = "123456789";   //2.校验一个字符串//习惯:过滤异常数据if (str.matches("[1-9]\\d(0,9)")) {//错误的数据System.out.println("数据格式有误");} else {//正确的数据System.out.println("数据格式正确");//3.定义一个变量,表示最终的结果int num = 0;//4.遍历字符串,得到每一个字符for (int i = 0; i < str.length(); i++) {int c = str.charAt(i) - '0';//5.把每一位数字放到num中num = num * 10 + c;}System.out.println(num);System.out.println(num+1);}}
}

运行结果:
数据格式正确
123456789

练习.算法水题

在这里插入图片描述

package kl003;public class Test3 {public static void main(String[] args) {System.out.println(toBinaryString(123));}public static String toBinaryString(int num) {//定义一个StringBuilder对象来拼接余数StringBuilder sb = new StringBuilder();//利用循环不断的除以2,取余数//运用死循环while(true){if (num == 0){break;}//取余数  %int remainder = num % 2;//倒着拼接sb.insert(0,remainder);//除以2num = num / 2;}return sb.toString();}}

运行结果:
1111011

练习.算法水题

在这里插入图片描述

package kl003;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Date;public class Test4 {public static void main(String[] args) throws ParseException {//请使用代码实现计算你活了多少天,用JDK7和JDK8两种方式实现//JDK7String birthday = "2005年12月5日";SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");Date date = sdf.parse(birthday);long birthdayTime = date.getTime();//计算当前时间的毫秒值long todayTime = System.currentTimeMillis();//计算间隔多少天long time = todayTime - birthdayTime;//计算天数long day = time / 1000 / 60 / 60 / 24;System.out.println("你活了" + day + "天");//JDK8LocalDate ld1 = LocalDate.of(2005,12,5);LocalDate ld2 = LocalDate.now();long days = ChronoUnit.DAYS.between(ld1,ld2);System.out.println("你活了" + days + "天");}
}

运行结果:
你活了7105天
你活了7105天

练习.算法水题

在这里插入图片描述

package kl003;import java.time.LocalDate;
import java.util.Calendar;public class Test5 {public static void main(String[] args) {//JDK7//可以把时间设置为2000年3月1日Calendar c = Calendar.getInstance();c.set(2000,2,1);//月份的范围是0-11//把日期往前推一天c.add(Calendar.DAY_OF_MONTH,-1);//看当前的时间是28号还是29号int day = c.get(Calendar.DAY_OF_MONTH);System.out.println(day);//JDK8//月份范围1-12LocalDate.of(2000,3,1);//把时间往前减一天LocalDate ld2 = LocalDate.of(2000, 3, 1).minusDays(1);System.out.println(ld2);//JDK8判断是否是闰年System.out.println(ld2.isLeapYear());}
}

运行结果:
29
2000-02-29
true
谢谢观看

http://www.xdnf.cn/news/7505.html

相关文章:

  • matlab绘制光学传递函数mtf曲线
  • Pattern解说
  • CPU与vivado编译速度关系
  • C++_AVL树
  • vue2.0 的计算属性
  • 人员管理2302版本
  • 特征筛选方法总结
  • frida 配置
  • Linux基础开发工具三(git,gdb/cgdb)
  • python next 函数
  • JVM核心配置参数详解与调优指南
  • JVM之GC常见的垃圾回收器
  • 深度学习————模型保存与部署
  • pkucpc2025 L:Game on Tree
  • python学习day2(未写完,明天继续补充)
  • 洛谷B3876—— [信息与未来 2015] 中间值
  • 为 Windows 和 Ubuntu 中设定代理服务器的详细方法
  • 4款好用的备忘录记事工具分享
  • Spring boot 集成 Knife4j
  • 网络I/O学习-poll(三)
  • 范围管理的实践策略与创新应用
  • 头歌之软件工程-数据设计
  • 433. 最小基因变化
  • AcWing 223. 阿九大战朱最学——扩展欧几里得算法
  • Javascript本地存储的方式有哪些?区别及应用场景?(含Deep Seek讲解)
  • [长城杯 2024]anote
  • 怎么利用JS根据坐标判断构成单个多边形是否合法
  • HarmonyOS Next应用分层架构下组件封装开发实践
  • 子网前缀长度
  • 【General Agent Benchmark】论文分享No.12:LLF-Bench