Java回顾第六章

懒懒张187 2021-04-27 11:59:39
Calendar类

/**
java.util.Calendar类:日历类
我们可以使用Calendar类中的方法获取日历上的字段(年,月,日,时,分,秒...)
我们可以使用Calendar类中的方法修改日历上字段的值 2019年-->2029年 11月-->2月
我们可以使用Calendar类中的方法把日历上的字段的值增加/减少 2019-5=2014 11月+3月=2月
我们可以使用Calendar类中的方法把日历对象转换为日期Date对象
Calendar 类是一个抽象类,无法直接创建对象,在Calendar 类中有一个静态方法,返回了Calendar 类的子类对象
static Calendar getInstance()
使用默认时区和语言环境获得一个日历。
注意:
西方月份:0-11月
东方月份:1-12月
西方星期:星期日-星期六
东方星期:星期一-星期日
*/
public class Demo01Calendar{
/**
getInstance方法的源码:
Calendar cal = null;
cal = new GregorianCalendar(zone, aLocale);
*/
Calendar c = Calendar.getInstance();
System.out.println(c);

}

输出结果:
java.util.GregorianCalendar[time=1619535222065,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=3,WEEK_OF_YEAR=18,WEEK_OF_MONTH=5,DAY_OF_MONTH=27,DAY_OF_YEAR=117,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=53,SECOND=42,MILLISECOND=65,ZONE_OFFSET=28800000,DST_OFFSET=0]

2.Calendar类常用方法

/**
Calendar类中的常用成员方法:
int get(int field) 获取指定日历字段的值
void set(int field, int value)将给定的日历字段设置为给定值。
void add(int field, int amount) 把日历字段增加或者减少指定的值
Date getTime() 把日历对象转换为日期对象
注意:
将以上方法参数int field,让我们传递指定的日历字段,这些日历字段在Calendar类中被定义为了常量
public final static int YEAR = 1;
public final static int MONTH = 2;
public final static int DATE = 5;
public final static int DAY_OF_MONTH = 5;
public final static int HOUR = 10;
public final static int MINUTE = 12;
public final static int SECOND = 13;
public final static int MILLISECOND = 14;
*/
public class Demo02Calendar {
public static void main(String[] args) {
//获取Calendar类的子类对象
Calendar c = Calendar.getInstance();
show04(c);
}

/**
Date getTime() 把日历对象转换为日期对象
*/
private static void show04(Calendar c) {
Date date = c.getTime();
System.out.println(date);//Tue Apr 27 23:19:10 CST 2021
}

/**
void add(int field, int amount) 把日历字段增加或者减少指定的值
参数:
int field:指定的字段
int amount:给字段增加|减少的值
传递正数:增加
传递负数:减少
*/
private static void show03(Calendar c) {
//把年-5年
c.add(Calendar.YEAR,-5);
//把月+4个月
c.add(Calendar.MONTH,4);
//把日-10日
c.add(Calendar.DATE,-10);

int year = c.get(Calendar.YEAR);
System.out.println(year);//2016 2017
int month = c.get(Calendar.MONTH);
System.out.println(month);//8
int date = c.get(Calendar.DATE);
System.out.println(date);//17
}

/**
void set(int field, int value)将给定的日历字段设置为给定值。
参数:
int field:指定的字段
int value:指定的值
同时设置年月日,建议使用以下方法:
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
*/
private static void show02(Calendar c) {
//把年设置为8888年
c.set(Calendar.YEAR,8888);
//把月设置为8月
c.set(Calendar.MONTH,8);
//设置日为8日
c.set(Calendar.DATE,8);
//同时设置年月日为9999-9-9
c.set(9999,9,9);

int year = c.get(Calendar.YEAR);
System.out.println(year);
int month = c.get(Calendar.MONTH);
System.out.println(month);
int date = c.get(Calendar.DATE);
System.out.println(date);
}

/**
int get(int field) 获取指定日历字段的值
参数:
int field:传递指定的日历字段
*/
private static void show01(Calendar c) {
//获取年
int year = c.get(Calendar.YEAR);
System.out.println(year+"年");
//获取月
int month = c.get(Calendar.MONTH);
System.out.println((month+1)+"月");
//获取日
//int date = c.get(Calendar.DATE);
//int date = c.get(Calendar.DAY_OF_MONTH);
int date = c.get(5);
System.out.println(date+"日");
}
}


3.Marh类

/**
java.lang.Math类:数学工具类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
Math类中的方法都是静态方法,通过类名.方法名(参数)可以直接使用
私有了构造方法,不让我们创建对象调用方法
成员方法:
static int abs(int a/double d) 返回 int/double 值的绝对值。
static double ceil(double a) 向上取整
static double floor(double a) 向下取整
static long round(double a) 四舍五入
static double max(double a, double b) 返回两个小数的最大值
static int max(int a, int b) 返回两个整数的最大值
static double min(double a, double b) 返回两个小数的最小值
static int min(int a, int b) 返回两个整数的最小值
static double pow(double a, double b) a的b次方
static double sqrt(double a) 计算平方根
static double random() 返回一个随机小数,范围[0.0-1.0)

alt+鼠标左键:可以操作列
*/
public class Demo01Math {
public static void main(String[] args) {
//甩头atic int abs(int a/double d) 返回 int/double 值的绝对值。
System.out.println(Math.abs(-10));//10
System.out.println(Math.abs(10));//10
System.out.println(Math.abs(-0.1));//0.1
System.out.println(Math.abs(0.1));//0.1
System.out.println("-------------------------");
//甩头atic double ceil(double a) 向上取整
System.out.println(Math.ceil(3.1));//4.0
System.out.println(Math.ceil(3.9));//4.0
System.out.println(Math.ceil(-3.1));//-3.0
System.out.println(Math.ceil(-3.9));//-3.0
System.out.println("-------------------------");
//甩头atic double floor(double a) 向下取整
System.out.println(Math.floor(3.1));//3.0
System.out.println(Math.floor(3.9));//3.0
System.out.println(Math.floor(-3.1));//-4.0
System.out.println(Math.floor(-3.9));//-4.0
System.out.println("-------------------------");
//甩头atic long round(double a) 四舍五入
System.out.println(Math.round(5.4999999));//5
System.out.println(Math.round(5.5));//6
System.out.println("-------------------------");
//甩头atic double max(double a, double b) 返回两个小数的最大值
//甩头atic int max(int a, int b) 返回两个整数的最大值
//甩头atic double min(double a, double b) 返回两个小数的最小值
//甩头atic int min(int a, int b) 返回两个整数的最小值
System.out.println(Math.max(10,20));//20
System.out.println(Math.min(10,20));//10
System.out.println(Math.max(1.1,11.1));//11.1
System.out.println(Math.min(-10,100));//-10
System.out.println("-------------------------");
System.out.println(Math.pow(2,3));//8.0
System.out.println(Math.pow(2,-3));//0.125
System.out.println(Math.pow(-2,3));//-8.0
//甩头atic double pow(double a, double b) a的b次方
System.out.println("-------------------------");
//甩头atic double sqrt(double a) 计算平方根
System.out.println(Math.sqrt(2));//1.414
System.out.println(Math.sqrt(3));//1.732
System.out.println("-------------------------");
//甩头atic double random() 返回一个随机小数,范围[0.0-1.0)
for (int i = 0; i <10 ; i++) {
/*
方法的底层源码:
Random r = new Random();
return r.nextDouble();
*/
double random = Math.random();
System.out.println(random);
}
}
}



4.System类

/**
java.lang.System类:
System 类包含一些有用的类字段和方法。它不能被实例化(私有了构造方法)。
里边方法的都是静态的,通过类名.方法名(参数)可以直接使用
成员方法:
static void exit(int status) 终止当前正在运行的 Java 虚拟机。
static long currentTimeMillis() 返回以毫秒为单位的当前时间。
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 数组复制
*/
public class Demo01System {
public static void main(String[] args) {
show03();
}

/**
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 数组复制(了解)
参数:
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
需求:
复制前:把源数组中[1,2,3,4,5]前3个元素复制到目标数组中[6,7,8,9,10]
复制后:把源数组中[1,2,3,4,5]前3个元素复制到目标数组中[1,2,3,9,10]
*/
private static void show03() {
int[] src = {1,2,3,4,5};
int[] dest = {6,7,8,9,10};
System.out.println("复制前遍历数组:"+ Arrays.toString(dest));
//数组赋值
System.arraycopy(src,0,dest,0,3);
System.out.println("复制后遍历数组:"+ Arrays.toString(dest));
}

/**
static long currentTimeMillis() 返回以毫秒为单位的当前时间。
需求:
在控制台输出1-10000,计算这段代码执行了多少毫秒
注意:
测试程序执行的效率
*/
private static void show02() {
//在程序执行前获取一次毫秒值
long s = System.currentTimeMillis();
//执行10000循环
for (int i = 1; i <= 10000; i++) {
System.out.println(i);
}
//在程序执行后获取一次毫秒值
long e = new Date().getTime();
System.out.println("程序执行共耗时:"+(e-s)+"毫秒!");//程序执行共耗时:164毫秒!
}

/**
static void exit(int status) 终止当前正在运行的 Java 虚拟机(JVM)。
参数:
int status:状态码
0:正常终止
非0:异常终止
*/
private static void show01() {
while (true){
System.out.println("我想有一个女同桌!");
System.exit(0);//终止JVM
}
}
}






























...全文
191 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin351550660 2021-04-28
  • 打赏
  • 举报
回复
楼主棒棒的,求分数
小梁の同学 2021-04-28
  • 打赏
  • 举报
回复
不错不错 可以用来借鉴
内容概要:本文针对传统三电平并网逆变器存在的谐波含量高、电网不平衡工况适应性差及动态响应滞后等问题,提出了一种基于有源中点箝位(ANPC)三电平逆变器的高性能并网控制策略。该策略融合了双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术和电网电压前馈控制,构建了“精准同步-扰动补偿-优质调制”的一体化控制体系。通过Simulink搭建仿真模型,在稳态对称、电网不平衡及动态扰动等多种工况下进行验证,结果表明该复合控制策略能显著降低并网电流谐波,提升锁相精度,有效抑制功率波动,并大幅缩短系统动态调节时间,增强了逆变器在复杂电网环境下的稳定性与适应性。; 适合人群:从事电力电子、新能源并网、智能电网等相关领域的科研人员及工程技术人员,尤其适合具备一定MATLAB/Simulink仿真基础、专注于并网逆变器控制策略研究的研发人员; 使用场景及目标:①用于提升大功率并网逆变器在电网电压不平衡、骤升骤降等非理想工况下的运行性能;②为ANPC拓扑结构与先进控制算法(如DPWMA、前馈-反馈复合控制)的协同优化提供仿真依据和技术参考;③适用于新能源发电系统、工业变流装置等对电能质量和动态响应要求较高的应用场景; 阅读建议:建议读者结合文中提出的控制架构图与仿真模型逐步复现,重点关注DPWMA调制实现、正负序分离锁相环设计及前馈补偿环节的参数整定,同时通过多工况仿真对比分析各项性能指标,深入理解各模块间的协同作用机制。
内容概要:本文以ANPC三电平并网逆变器为研究对象,提出了一种融合双极性倍频脉宽调制(DPWMA)、正负序分离锁相与电网电压前馈控制的高性能并网控制策略。通过对ANPC拓扑结构的分析,阐明其在开关损耗均衡、中点电位稳定和低输出谐波方面的硬件优势,为高质量并网奠定基础。在此基础上,DPWMA调制策略有效提升输出波形的等效开关频率,显著降低谐波含量;正负序分离锁相技术可精准提取电网正序分量,克服电网不平衡导致的锁相失真与电流不对称问题;电网电压前馈控制则增强系统对动态扰动的响应能力,缩短调节时间。文章构建了“信号采集—核心控制—调制驱动”的三层协同控制架构,并通过多工况仿真验证了该策略在稳态、不平衡及动态扰动条件下的优越性能,结果表明系统具备优异的电能质量、运行稳定性与抗扰能力。; 适合人群:电力电子、新能源并网、自动控制等相关领域的科研人员、研究生及从事逆变器设计与控制的工程技术人员。; 使用场景及目标:① 提升大功率并网逆变器在复杂电网环境下的运行稳定性与电能质量;② 解决电网电压不平衡、谐波畸变、电压骤变等工况下的锁相失真与电流不对称问题;③ 优化动态响应性能,应用于新能源发电、工业变流器等高可靠性要求场景; 阅读建议:建议结合Matlab/Simulink仿真平台,复现文中控制策略与仿真模型,重点理解DPWMA调制实现方法、正负序分离锁相环设计及前馈-反馈复合控制结构的协同机制,并通过不同扰动工况测试系统鲁棒性。
内容概要:本文研究了基于Q-Learning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,旨在提升水下机器人在复杂、非线性及动态变化海洋环境中的控制精度与自适应能力。通过将强化学习算法与传统PID控制深度融合,构建了一种能够在线自主调整PID参数的智能控制框架,有效克服了传统PID控制器在面对模型不确定性、外部干扰和时变系统特性时适应性不足的问题。研究详细阐述了AUV的动力学建模过程,并精心设计了Q-Learning算法的状态空间、动作空间与奖励函数,使其能在Matlab仿真环境中通过不断的交互试错进行学习与优化,最终实现对航向角、深度等关键运动姿态的高精度、强鲁棒性控制。仿真结果充分验证了该方法在响应速度、稳态精度和抗干扰性能方面相较于传统方法的显著优越性,为智能水下装备的自主决策与控制提供了重要的理论依据和技术路径。; 适合人群:具备自动控制理论基础、强化学习初步知识及MATLAB编程能力的研究生、科研人员及从事智能机器人、无人系统控制开发的工程师。; 使用场景及目标:①应用于水下机器人、无人潜航器等复杂动态系统的智能控制设计;②解决传统PID控制器参数整定困难、环境适应性差和鲁棒性不足的关键问题;③推动强化学习等人工智能技术在实际工程控制系统中的落地应用、性能优化与可靠性验证。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注Q-Learning与PID的耦合机制、状态量与奖励函数的设计原则,深入理解智能控制策略的训练收敛过程、超参数敏感性及其在不同工况下的性能表现。

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧