常用类

本文深入讲解Java中的常用类,包括Date、SimpleDateFormat、Calendar、Math、Random和System等,覆盖时间处理、数学运算、随机数生成及系统操作,是Java开发者必备的知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常用类

Date SimpleDateFormat Calendar Math Random System Runtime

1.1 Date

Java初始时 JDK1.0是
唯一一个代表时间的类,由于Date类不能实现国际化,JDK1.1出现Calendar。舍弃代表着不再进行维护,并不是这个东西不能使用了。所在的包是java.util
Date表示的是时间类 这个时间是从1900年1月1日00:00:00开始算的
1.初始化Date对象
2.常用的方法

掌握的:
时间戳和对应时间的转换

// 创建Date对象
// 1. 通过无参的构造方法创建
Date date = new Date();
// 可以获取当前时间
System.out.println(date);

	// 根据年月日 创建Date对象
	/*
	 * 年需要 - 1900
	 * 月份 需要传0-11的值
	 * */
	Date date1 = new Date(2017-1900, 7, 28);
	System.out.println(date1);
	
	Date date2 = new Date(2017 - 1900, 13, 13, 12, 29, 30);
	System.out.println(date2);
	
	

	long times = System.currentTimeMillis(); // 获得是当前时间的毫秒数
	// 时间戳 : 指定时间到1970年1月1日的毫秒数的时间
	/*
	 * 当前时间 - 1970年1月1日 00:00:00
	 * */
	// 根据毫秒数创建Date对象
	Date date3 = new Date(times);


// 创建Date对象
		Date date = new Date();
	
	// 1. 将时间对象对应的时间转换成时间戳  单位是毫秒级别的
	long times = date.getTime();
	System.out.println(times); 
	
	// 获得年
	int year = date.getYear();
	System.out.println(year + 1900);
	// 获得月
	int month = date.getMonth();
	System.out.println(month + 1);
	
	// 获得日期
	int day = date.getDate();
	System.out.println(day);
	
	// 获得星期
	int week = date.getDay();
	System.out.println(week);
	
	// 获取时
	int hour = date.getHours();
	// 获取分
	int minute = date.getMinutes();
	// 获取秒
	int seconds = date.getSeconds();

1.2 SimpleDateFormat ​

时间格式化。
时间格式:2017年09月14日 10:00:00 位于java.text

掌握时间格式化函数语法: 【找度娘】
y - 表示的是年 yyyy
M - 表示的是月 MM
d - 表示日 dd
h - 表示的是时(十二小时制) hh
H - 表示的是时(24小时制) HH
m - 表示的是分 mm
s - 表示的是秒 ss
S - 表示的是毫秒 SSS
E - 表示的是星期
a - 上午/下午的标记
z - 表示的是时区

时间格式化类如何使用??
    1.提供一个时间模板(String类型的)
    2.将String类型的模板实例化成模板对象SimpleDateFormat对象
    3.将时间格式化


    // 时间对象
	Date date = new Date();
	// 1. 设置时间模板
	String pattern = "yyyy年-MM月-dd日 a hh:mm:ss:SSS 星期:E 一年中第D天 一年中第w星期  一个月中经历的第 W星期 z";
	// 2.根据时间模板创建格式化对象
	SimpleDateFormat sdf = new SimpleDateFormat(pattern);
	// 3.将时间按照对应的格式格式化
	String dateStr = sdf.format(date);

1.3 Calendar

对于实际开发,时间显示这个类使用比较多
Calendar这个类是一个抽象类。如果想获得这个类的实例,在这个类中提供了一个静态方法static Calendar getInstance();

注意:
年月日获取时 调用的是get方法 通过get方法获取字段值 否则结果是不准确的
例如 int year = Calendar.getIntances().get(Calendar.YEAR);

// 1. 获得Calendar对象
Calendar calendar = Calendar.getInstance();

	// 设置日历时间
	Date date = new Date();
	//Date dat = new Date(2017-1900, 5, 18);
	// 将日历时间设置为当前时间
	calendar.setTime(date);
	
	// 获得时间 如果不设置 直接获取当前时间
	Date date1 = calendar.getTime();
	System.out.println(date1);
	
	//将Calendar时间实例化
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
	String formatDate = sdf.format(calendar.getTime());
	System.out.println(formatDate);
	
	
	// 日期类设置时间的另一种方式 设置自定义时间
	/*
	 * 可以只设置年月日
	 * 可以只设置年月日时分
	 * 可以设置年月日时分秒
	 * */
	calendar.set(2017, 7, 26, 11, 22, 33);
	formatDate = sdf.format(calendar.getTime());
	System.out.println(formatDate);
	Date customDate = calendar.getTime();
	System.out.println(customDate);
	
	// 设置/获取时间对应的年
	Calendar nc = Calendar.getInstance();
	/*
	 * field 这个是Calendar类中对应的字段
	 * */
	nc.set(Calendar.YEAR, 2000);
	// 获取年
	int year = nc.get(Calendar.YEAR);
	System.out.println(year);
	
	// 设置/获取时
	nc.set(Calendar.HOUR, 5);
	int hour = nc.get(Calendar.HOUR);
	System.out.println(hour);
	
	// 不设置 单纯获取当前时间的 
	int month = nc.get(Calendar.MONTH);
	System.out.println(month + 1);
	
	/*month = Calendar.MONTH;
	System.out.println(month);*/
	
	
	
	// 求两个时间的时间差(毫秒级别的) 常用到的
	// 设置时间 起始时间
	Calendar c1 = Calendar.getInstance();
	c1.set(2017, 8, 10, 12, 0, 0);
	
	// 终止时间
	Calendar c2 = Calendar.getInstance();
	c2.set(2017, 9, 1, 12, 0, 0);
	
	// 先计算毫秒差
	long time1 = c1.getTimeInMillis();
	long time2 = c2.getTimeInMillis();
	
	long time = time2 - time1;
	System.out.println(time);
	
	// 求秒数
	long second = time / 1000;
	// 求分
	long minute = second / 60;
	// 	求时
	long hours = minute / 60;
	// 求天
	long days = hours / 24;
	String timeStr = String.format("活动时间倒计时:%d天 %d时", days, hours%24);
	System.out.println(timeStr);
	
		
	// 比较两个时间的日期
	int res = c1.compareTo(c2);
	System.out.println(res);

*1.4 Math

数学工具类 数学运算的一些方法和字端

		System.out.println("自然对数:" + Math.E);
		System.out.println("圆周率:" + Math.PI);
	
	// 向上求整
	// 该值大于等于参数,并等于某个整数
	double res = Math.ceil(18.1);
	System.out.println(res); // 19.0
	
	// 向下求整
	// 该值小于等于参数,并等于某个整数
	res = Math.floor(18.9);
	System.out.println(res); // 18.0
	
	// 四舍五入
	long res1 = Math.round(18.9);
	System.out.println(res1); // 19
	
	int res2 = Math.round(18.4f);
	System.out.println(res2);
	
	// 两个数之间的最大值
	int max = Math.max(10, 18);
	System.out.println(max);
	
	int min = Math.min(10, 18);
	System.out.println(min);

	// 求幂数
	res = Math.pow(5, 10);
	System.out.println(res);
	
	// 求平方根
	res = Math.sqrt(16);
	System.out.println(res);
	
	// 求立方根
	res = Math.cbrt(8);
	System.out.println(res);
	
	// 随机数 [0, 1.0)
	res = Math.random();
	System.out.println(res);
	
	// 27 ~ 45之间  - 27  = [0, 18)
	res = Math.random()*18 + 27;
	System.out.println(res);

1.5 伪随机类Random

​ Random实现了随机算法的伪随机,也就有规则的随机。
在进行随机时,在随机算法的起源数字[种子]的基础上加上了一定的变换,从而产生有规律的随机数字
例如: 1 —>
100 122 134 144
1 ---->
100 122 134 144 创建伪随机类对象
通过构造方法

	// 创建伪随机类对象
	Random rd = new Random();
	//随机算法的起源数字时:当前时间的毫秒值
	
	// 指定随机算法起源数字
	//Random rd1 = new Random(10);
	
	// 获得随机值
	// 获取boolean类型随机值  在true或者false之间选择
	boolean res = rd.nextBoolean();
	System.out.println(res);
	
	// 获取double类型的随机值  取值[0, 1.0)
	double d = rd.nextDouble();
	System.out.println(d);
	
	// 获取int类型的随机值 范围:int类型数值的取值范围[-2^31, 2^31 - 1]
	int i = rd.nextInt();
	System.out.println(i);
	
	// [0, 100)
	int i1 = rd.nextInt(100);
	System.out.println(i1);
	
	System.out.println("-----------------");
	
	// 固定种子数 的随机类
	Random rd1 = new Random(10);
	// 获得种子数为10的随机序列中的5个随机数
	for(int j = 0; j < 5; j++){
		int num = rd1.nextInt(100);
		System.out.println(num);
	}
	System.out.println("-----------------");
	
	for(int j = 0; j < 5; j++){
		int num = rd.nextInt(100);
		System.out.println(num);
	}
	
	/*
	 * 随机数
	 * 		27 - 48之间整数
	 * 			-27  == 0 21
	 * */
	
	int index = rd.nextInt(21) + 27;
	System.out.println(index);

1.6 System

System这个类中包含了对应的一些控制输入输出的字段,以及系统的一些方法
控制输入来源于控制台
in 控制输出目的地的字段
out
err - 错误 【字是空色的】 err的输出速率比out输出速率快一些

/*
		 * static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
          从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 
		 * */
		int[] src = new int[]{1, 2, 3, 4, 5};
		int[] dest = new int[20];
		dest[0] = 11;
		dest[1] = 12;
		/* 第一个参数
		 * 		原数组 - 被拷贝的数组
		 * 第二个参数
		 * 		拷贝数组中的元素从哪个脚标开始
		 * 第三个
		 * 		目的数组 - 拷贝到的数组
		 * 第四个参数
		 * 		要拷贝过来的元素在目的数组中从哪个脚标开始放置
		 * 第五个参数
		 * 		拷贝原数组中多少个元素
		 * 
		 * */
		System.arraycopy(src, 0, dest, 2, 3);
		// 这种拷贝执行效率偏低
		System.out.println(Arrays.toString(dest));
	
	// 获取当前时间的毫秒数[时间戳]
	long times = System.currentTimeMillis();
	System.out.println(times);

1.7 Runtime

Runtime封装了运行时环境 每一个java程序都有自己对应的一个Runtime类实例,可以保证程序与运行环境相关联
Runtime是一个单例类

1.内存管理
2.在当前程序中执行其他程序

标题基于SpringBoot+Vue的学生交流互助平台研究AI更换标题第1章引言介绍学生交流互助平台的研究背景、意义、现状、方法与创新点。1.1研究背景与意义分析学生交流互助平台在当前教育环境下的需求及其重要性。1.2国内外研究现状综述国内外在学生交流互助平台方面的研究进展与实践应用。1.3研究方法与创新点概述本研究采用的方法论、技术路线及预期的创新成果。第2章相关理论阐述SpringBoot与Vue框架的理论基础及在学生交流互助平台中的应用。2.1SpringBoot框架概述介绍SpringBoot框架的核心思想、特点及优势。2.2Vue框架概述阐述Vue框架的基本原理、组件化开发思想及与前端的交互机制。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue在学生交流互助平台中的整合方式及优势。第3章平台需求分析深入分析学生交流互助平台的功能需求、非功能需求及用户体验要求。3.1功能需求分析详细阐述平台的各项功能需求,如用户管理、信息交流、互助学习等。3.2非功能需求分析对平台的性能、安全性、可扩展性等非功能需求进行分析。3.3用户体验要求从用户角度出发,提出平台在易用性、美观性等方面的要求。第4章平台设计与实现具体描述学生交流互助平台的架构设计、功能实现及前后端交互细节。4.1平台架构设计给出平台的整体架构设计,包括前后端分离、微服务架构等思想的应用。4.2功能模块实现详细阐述各个功能模块的实现过程,如用户登录注册、信息发布与查看、在线交流等。4.3前后端交互细节介绍前后端数据交互的方式、接口设计及数据传输过程中的安全问题。第5章平台测试与优化对平台进行全面的测试,发现并解决潜在问题,同时进行优化以提高性能。5.1测试环境与方案介绍测试环境的搭建及所采用的测试方案,包括单元测试、集成测试等。5.2测试结果分析对测试结果进行详细分析,找出问题的根源并
内容概要:本文详细介绍了一个基于灰狼优化算法(GWO)优化的卷积双向长短期记忆神经网络(CNN-BiLSTM)融合注意力机制的多变量多步时间序列预测项目。该项目旨在解决传统时序预测方法难以捕捉非线性、复杂时序依赖关系的问题,通过融合CNN的空间特征提取、BiLSTM的时序建模能力及注意力机制的动态权重调节能力,实现对多变量多步时间序列的精准预测。项目不仅涵盖了数据预处理、模型构建与训练、性能评估,还包括了GUI界面的设计与实现。此外,文章还讨论了模型的部署、应用领域及其未来改进方向。 适合人群:具备一定编程基础,特别是对深度学习、时间序列预测及优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①用于智能电网负荷预测、金融市场多资产价格预测、环境气象多参数预报、智能制造设备状态监测与预测维护、交通流量预测与智慧交通管理、医疗健康多指标预测等领域;②提升多变量多步时间序列预测精度,优化资源调度和风险管控;③实现自动化超参数优化,降低人工调参成本,提高模型训练效率;④增强模型对复杂时序数据特征的学习能力,促进智能决策支持应用。 阅读建议:此资源不仅提供了详细的代码实现和模型架构解析,还深入探讨了模型优化和实际应用中的挑战与解决方案。因此,在学习过程中,建议结合理论与实践,逐步理解各个模块的功能和实现细节,并尝试在自己的项目中应用这些技术和方法。同时,注意数据预处理的重要性,合理设置模型参数与网络结构,控制多步预测误差传播,防范过拟合,规划计算资源与训练时间,关注模型的可解释性和透明度,以及持续更新与迭代模型,以适应数据分布的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值