Java.util包简介并教您如何开发应用之二 (2)

本文介绍了Java中的日历类Calendar及其子类GregorianCalendar,阐述了它们与日期类的功能差异,以及如何使用不同构造函数创建对象,还介绍了TimeZone和Locale类。此外,还讲解了随机数类Random,包括其构造方法和产生不同类型随机数的普通方法,并给出了示例代码及运行结果。
1.3 日历类Calendar

在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析。在JDK1.1中提供了类Calendar来完成第一种功能,类DateFormat来完成第二项功能。

dateFormat是java.text包中的一个类。与Date类有所不同的是,DateFormat类接受用各种语言和不同习惯表示的日期字符串。本节将介绍java.util包中的类Calendar及其它新增加的相关的类。

类Calendar是一个抽象类,它完成日期(Date)类和普通日期表示法(即用一组整型域如YEAR,MONTH,DAY,HOUR表示日期)之间的转换。

由于所使用的规则不同,不同的日历系统对同一个日期的解释有所不同。在JDK1.1中提供了Calendar类一个子类GregorianCalendar??它实现了世界上普遍使用的公历系统。当然用户也可以通过继承Calendar类,并增加所需规则,以实现不同的日历系统。

第GregorianCalendar继承了Calendar类。本节将在介绍类GregorianCalendar的同时顺带介绍Calendar类中的相关方法。

类GregorianCalendar提供了七种构造函数:

(1)public GregorianCalendar()

创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间。

(2)public GregorianCalendar(TimeZone zone)

创建的对象中的相关值被设置成指定时区zone,缺省地点的当前时间。

(3)public GregorianCalendar(Locale aLocale)

创建的对象中的相关值被设置成缺省时区,指定地点aLocale的当前时间。

(4)public GregorianCalendar(TimeZone zone,Local aLocale)

创建的对象中的相关值被设置成指定时区,指定地点的当前时间。

上面使用到的类TimeZone的性质如下:

TimeZone是java.util包中的一个类,其中封装了有关时区的信息。每一个时区对应一组ID。类TimeZone提供了一些方法完成时区与对应ID两者之间的转换。

(Ⅰ)已知某个特定的ID,可以调用方法

public static synchronized TimeZone getTimeZone(String ID) 来获取对应的时区对象。



太平洋时区的ID为PST,用下面的方法可获取对应于太平洋时区的时区对象:


TimeZone tz=TimeZone.getTimeZone("PST");
 



调用方法getDefault()可以获取主机所处时区的对象。 


TimeZone tz=TimeZone.getDefault();
 



(Ⅱ)调用以下方法可以获取时区的ID 


public static synchronized String[]
getavailableIDs(int rawOffset)
 



根据给定时区偏移值获取ID数组。同一时区的不同地区的ID可能不同,这是由于不同地区对是否实施夏时制意见不统一而造成的。 

例 


String s[]=TimeZone.getAvailableIDs(-7*60*60*1000);
 



打印s,结果为s[0]=PNT,s[1]=MST 

public static synchronized String[] getAvailableIDs() 

获取提供的所有支持的ID。 

public String getID() 

获取特定时区对象的ID。 

例: 


TimeZone tz=TimeZone.getDefault();
String s=tz.getID();
 



打印s,结果为s=CTT。 

上面使用类的对象代表了一个特定的地理、政治或文化区域。Locale只是一种机制,它用来标识一类对象,Local本身并不包含此类对象。要获取一个Locale的对象有两种方法: 

(Ⅰ)调用Locale类的构造方法: 


Locale(String language,String country)
Locale(String language,
String country,String variant)
 



(Ⅱ)调用Locale类中定义的常量 

Local类提供了大量的常量供用户创建Locale对象。 

例 Locale.CHINA 

为中国创建一个Locale的对象。 

类TimeZone和类Locale中的其它方法,读者可查阅API。 

(5)public GregorianCalendar(int year,int month,int date) 

(6)public GregorianCalendar(int year,int month,int date,int hour,int minute) 

(7)public GregorianCalendar(int year,int month,int date,int hour,int minute,int second) 

用给定的日期和时间创建一个GregorianCalendar的对象。 

参数说明: 

year-设定日历对象的变量YEAR;month-设定日历对象的变量MONTH; 

date-设定日历对象的变量DATE;hour-设定日历对象的变量HOUR_OF_DAY; 

minute-设定日历对象的变量MINUTE;second-设定日历对象的变量SECOND。 

与Date类中不同的是year的值没有1900这个下限,而且year的值代表实际的年份。month的含义与Date类相同,0代表1月,11代表12月。 

例 GregorianCalendar cal=new GregorianCalendar(1991,2,4) 

cal的日期为1991年3月4号。 

除了与Date中类似的方法外,Calendar类还提供了有关方法对日历进行滚动计算和数学计算。计算规则由给定的日历系统决定。进行日期计算时,有时会遇到信息不足或信息不实等特殊情况。Calendar采取了相应的方法解决这些问题。当信息不足时将采用缺省设置,在GregorianCalendar类中缺省设置一般为YEAR=1970,MONTH=JANUARY,DATE=1。 

当信息不实时,Calendar将按下面的次序优先选择相应的Calendar的变量组合,并将其它有冲突的信息丢弃。 


MONTH+DAY_OF_MONTH
MONTH+WEEK_OF_MONTH+DAY_OF_WEEK
MONTH+DAY_OF_WEEK_OF_MONTH+DAY_OF_WEEK
DAY_OF+YEAR
DAY_OF_WEEK_WEEK_OF_YEAR
HOUR_OF_DAY
 



1.4 随机数类Random 

Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。它可以产生int、long、float、double以及Goussian等类型的随机数。这也是它与java.lang.Math中的方法Random()最大的不同之处,后者只产生double型的随机数。 

类Random中的方法十分简单,它只有两个构造方法和六个普通方法。 

构造方法: 

(1)public Random() 

(2)public Random(long seed) 

Java产生随机数需要有一个基值seed,在第一种方法中基值缺省,则将系统时间作为seed。 

普通方法: 

(1)public synonronized void setSeed(long seed) 

该方法是设定基值seed。 

(2)public int nextInt() 

该方法是产生一个整型随机数。 

(3)public long nextLong() 

该方法是产生一个long型随机数。 

(4)public float nextFloat() 

该方法是产生一个Float型随机数。 

(5)public double nextDouble() 

该方法是产生一个Double型随机数。 

(6)public synchronized double nextGoussian() 

该方法是产生一个double型的Goussian随机数。 

例1.2 RandomApp.java。 


//import java.lang.*;
  import java.util.Random;

  public class RandomApp
{
   public static void main(String args[])
{
    Random ran1=new Random();
    Random ran2=new Random(12345);
    //创建了两个类Random的对象。
    System.out.println
("The 1st set of random numbers:");
    System.out.println
("/t Integer:"+ran1.nextInt());
    System.out.println
("/t Long:"+ran1.nextLong());
    System.out.println
("/t Float:"+ran1.nextFloat());
    System.out.println
("/t Double:"+ran1.nextDouble());
    System.out.println
("/t Gaussian:"+ran1.nextGaussian());
    //产生各种类型的随机数
    System.out.print
("The 2nd set of random numbers:");
    for(int i=0;i<5;i++)
{
 System.out.println(ran2.nextInt()+" ");
     if(i==2) System.out.println();
     //产生同种类型的不同的随机数。
     System.out.println();
//原文如此
    }
   }
  }
 



运行结果: 


E:/java01>java RandomApp
  The 1st set of random numbers:
    Integer:-173899656
    Long:8056223819738127077
    Float:0.6293638
    Double:0.7888394520265607
    Gaussian:0.5015701094568733
  The 2nd set of random numbers:1553932502
  -2090749135
  -287790814
  -355989640
  -716867186
  E:/java01>
本系统采用Python编程语言中的Flask框架作为基础架构,实现了一个面向二手商品交易的网络平台。该平台具备完整的前端展示与后端管理功能,适合用作学术研究、课程作业或个人技术能力训练的实际案例。Flask作为一种简洁高效的Web开发框架,能够以模块化方式支持网站功能的快速搭建。在本系统中,Flask承担了核心服务端的角色,主要完成请求响应处理、数据运算及业务流程控制等任务。 开发工具选用PyCharm集成环境。这款由JetBrains推出的Python专用编辑器集成了智能代码提示、错误检测、程序调试与自动化测试等多种辅助功能,显著提升了软件编写与维护的效率。通过该环境,开发者可便捷地进行项目组织与问题排查。 数据存储部分采用MySQL关系型数据库管理系统,用于保存会员资料、产品信息及订单历史等内容。MySQL具备良好的稳定性和处理性能,常被各类网络服务所采用。在Flask体系内,一般会配合SQLAlchemy这一对象关系映射工具使用,使得开发者能够通过Python类对象直接管理数据实体,避免手动编写结构化查询语句。 缓存服务由Redis内存数据库提供支持。Redis是一种支持持久化存储的开放源代码内存键值存储系统,可作为高速缓存、临时数据库或消息代理使用。在本系统中,Redis可能用于暂存高频访问的商品内容、用户登录状态等动态信息,从而加快数据获取速度,降低主数据库的查询负载。 项目归档文件“Python_Flask_ershou-master”预计含以下关键组成部分: 1. 应用主程序(app.py):含Flask应用初始化代码及请求路径映射规则。 2. 数据模型定义(models.py):通过SQLAlchemy声明与数据库表对应的类结构。 3. 视图控制器(views.py):含处理各类网络请求生成回复的业务函数,涵盖账户管理、商品展示、订单处理等操作。 4. 页面模板目录(templates):存储用于动态生成网页的HTML模板文件。 5. 静态资源目录(static):存放层叠样式表、客户端脚本及图像等固定资源。 6. 依赖清单(requirements.txt):记录项目运行所需的所有第三方Python库及其版本号,便于环境重建。 7. 参数配置(config.py):集中设置数据库连接参数、缓存服务器地址等运行配置。 此外,项目还可能含自动化测试用例、数据库结构迁移工具以及运行部署相关文档。通过构建此系统,开发者能够系统掌握Flask框架的实际运用,理解用户身份验证、访问控制、数据持久化、界面动态生成等网络应用关键技术,同时熟悉MySQL数据库运维与Redis缓存机制的应用方法。对于入门阶段的学习者而言,该系统可作为综合性的实践训练载体,有效促进Python网络编程技能的提升。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在当代储能装置监控技术领域,精确测定锂离子电池的电荷存量(即荷电状态,SOC)是一项关键任务,它直接关系到电池运行的安全性、耐久性及整体效能。随着电动车辆产业的迅速扩张,业界对锂离子电池SOC测算的精确度与稳定性提出了更为严格的标准。为此,构建一套能够在多样化运行场景及温度条件下实现高精度SOC测算的技术方案具有显著的实际意义。 本文介绍一种结合Transformer架构与容积卡尔曼滤波(CKF)的混合式SOC测算系统。Transformer架构最初在语言处理领域获得突破性进展,其特有的注意力机制能够有效捕捉时间序列数据中的长期关联特征。在本应用中,该架构用于分析电池工作过程中采集的电压、电流与温度等时序数据,从而识别电池在不同放电区间的动态行为规律。 容积卡尔曼滤波作为一种适用于非线性系统的状态估计算法,在本系统中负责对Transformer提取的特征数据进行递归融合与实时推算,以持续更新电池的SOC值。该方法增强了系统在测量噪声干扰下的稳定性,确保了测算结果在不同环境条件下的可靠性。 本系统在多种标准驾驶循环(如BJDST、DST、FUDS、US06)及不同环境温度(0°C、25°C、45°C)下进行了验证测试,这些条件涵盖了电动车辆在实际使用中可能遇到的主要工况与气候范围。实验表明,该系统在低温、常温及高温环境中,面对差异化的负载变化,均能保持较高的测算准确性。 随附文档中提供了该系统的补充说明、实验数据及技术细节,核心代码与模型文件亦含于对应目录中,可供进一步研究或工程部署使用。该融合架构不仅在方法层面具有创新性,同时展现了良好的工程适用性与测算精度,对推进电池管理技术的进步具有积极意义。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值