设为首页
收藏本站
切换到窄版
登录
立即注册
找回密码
搜索
搜索
本版
帖子
用户
快捷导航
论坛
BBS
C语言
C++
NET
JAVA
PHP
易语言
数据库
IE盒子
»
论坛
›
IE盒子
›
JAVA
›
Java语言程序设计— Java基础类库—System类与Runtime类 ...
返回列表
发帖
查看:
92
|
回复:
0
Java语言程序设计— Java基础类库—System类与Runtime类 ...
[复制链接]
九奔
九奔
当前离线
积分
10
3
主题
4
帖子
10
积分
新手上路
新手上路, 积分 10, 距离下一级还需 40 积分
新手上路, 积分 10, 距离下一级还需 40 积分
积分
10
发消息
发表于 2022-12-28 16:23:05
|
显示全部楼层
|
阅读模式
已经介绍了基本类型(Java语言程序设计— Java基础类库—基本类型的包装类、JDK5.0新特性——自动装箱和拆箱、Scanner类、String类、StringBuffer类和StringBuilder类)的包装类、JDK5.0新特性——自动装箱和拆箱、Scanner类、String类的初始化、String类的常见操作、StringBuffer类、StringBuilder类、String类对正则表达式的支持、String、StringBuffer、StringBuilder的区别,下面将介绍System类、Runtime类、Math类、Random类、Date类、Calendar类、DateFormat类、SimpleDateFormat类、JDK8.0新特性——日期时间API和JDK7.0新特性——switch语句支持字符串类型。
System类与Runtime类、Math类与Random类、日期操作类、JDK7.0新特性——switch语句支持字符串类型
学习目标
(1)能够掌握System类
(2)能够掌握Runtime类
(3)能够掌握Math类
(4)能够掌握Random类
(5)能够掌握Date类
(6)能够掌握Calendar类
(7)能够掌握DateFormat类
(8)能够掌握SimpleDateFormat类
(9)能够掌握JDK8.0新特性——switch语句支持字符串类型
Ø
System类
Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能。Java提供了System类和Runtime类与程序的运行平台进行交互。
System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类属性和方法都是静态的,可以直接调用,接下来先了解一下它的常用方法,如表所示。
方法声明
功能描述
static long currentTimeMillis()
返回以毫秒为单位的当前时间。
static void exit(int status)
终止当前正在运行的 Java 虚拟机。
static void gc()
运行垃圾回收器。
static Properties getProperties()
取得当前系统的全部属性
static String getProperty(String key)
根据键取得当前系统中对应的属性值
1.currentTimeMillis()
currentTimeMillis()方法可以获取以毫秒为单位的当前时间,如例所示。
程序的运行结果如图所示。
在例中,获取了两次系统当前时间,在这两次中间调用sleep(long millis)方法,让程序睡眠100ms,最后用后获取的时间减去先获取的时间,求出系统睡眠的时间,这里运行结果可能大于100ms,这是由于计算机性能不同造成的。
2.getProperties(String key)
getProperties(String key)方法可以获取当前系统属性中键key对应的值,如例所示。
程序的运行结果如图所示。
图中运行结果打印出当前系统key对应的属性。例中,根据系统属性的键key,获取了对应的属性值并打印。
Ø
Runtime类
Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,可以调用Runtime的静态方法getRuntime()方法获取它的Runtime对象。
Runtime类有些方法与System类相似,先来了解一下Runtime类的常用方法,如表所示。
方法声明
功能描述
int availableProcessors()
向 Java 虚拟机返回可用处理器的数目。
Process exec(String command)
在单独的进程中执行指定的字符串命令。
long freeMemory()
返回 Java 虚拟机中的空闲内存量。
void gc()
运行垃圾回收器。
static Runtime getRuntime()
返回与当前 Java程序相关的运行时对象。
long maxMemory()
返回 Java 虚拟机试图使用的最大内存量。
long totalMemory()
返回 Java 虚拟机中的内存总量。
表中列举了Runtime类的常用方法,接下来通过一个案例来演示这些方法的使用。如例所示。
程序的运行结果如图所示。
在例中,首先调用getRuntime()方法得到Runtime实例,然后调用它的方法获取Java运行时环境信息,最后调用exec(String command)方法,指定参数为“notepad.exe”命令,程序运行自动启动记事本。
Math类与Random类
Ø
Math类
Math类位于Java.lang包中,它提供了许多用于数学运算的静态方法,包括指数运算、对数运算、平方根运算和三角运算等。Math类还提供了两个静态常量E(自然对数)和PI(圆周率)。Math类的构造方法是私有的,因此它不能被实例化,另外,Math类是用final修饰的,因此不能有子类。接下来了解一下Math类的常用方法,如表所示。
方法声明
功能描述
static int abs(int a)
返回绝对值
static double ceil(double a)
返回大于或等于参数的最小整数
static double floor(double a)
返回小于或等于参数的最大整数
static int max(int a, int b)
返回两个参数的较大值
static int min(int a, int b)
返回两个参数的较小值
random()
返回0.0和1.0之间double类型的随机数,包括0.0,不包括1.0
static long round(double a)
返回四舍五入的整数值
static double sqrt(double a)
平方根函数
static double pow(double a, double b)
幂运算
表中列出了Math类的常用方法,接下来用一个案例演示Math类的使用,如例所示。
程序的运行结果如图所示。
在例中,分别调用了Math类一些静态方法计算数值,最后用一个循环生成5个0.0~1.0的double类型随机数,Math类还有很多数学中使用的方法,读者可以查阅JDK使用文档深入学习。
Ø
Random类
java.util.Random类专门用于生成一个伪随机数,它有两个构造方法:一个是无参数的,使用默认的种子(以当前时间作为种子),另一个需要一个long型整数的参数作为种子。
与Math类中的random()方法相比,Random类提供了更多方法生成伪随机数,不仅能生成整数类型随机数,还能生成浮点型随机数,接下来先了解一下Random类的常用方法,如表所示。
方法声明
功能描述
boolean nextBoolean()
返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。
double nextDouble()
返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。
float nextFloat()
返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。
int nextInt()
返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
int nextInt(int n)
返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
long nextLong()
返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
表中列出了Random类的常用方法,接下来用一个案例演示Random类的使用,如例所示。
程序的运行结果如图所示。
图中运行结果打印出随机数。例中,首先用无参的构造方法创建了Random实例,然后分别获取3个int类型随机数和3个范围在0.0~100.0的double类型随机数,可以看到,程序运行两次,生成不同的随机数。接着创建了一个参数为10的Random实例,同样获取两组随机数,两次运行结果可以看到生成了相同的随机数,这是因为生成的是伪随机数,获取Random实例时指定了种子,用同样的种子获取的随机数相同,前两组不同随机数的种子是默认使用当前时间,所以前两组随机数不同。
日期操作类
在实际开发中经常会遇到日期类型的操作,Java对日期的操作提供了良好的支持,有java.util包中的Date类、Calendar类,还有java.text包中的DateFormat类以及它的子类SimpleDateFormat类,接下来会详细讲解这些类的用法。
Ø
Date类
java.util包中的Date类用于表示日期和时间,里面大多数构造方法和常用方法声明为已过时,但创建日期的方法很常用,它的构造方法中只有2个没有标注已过时,接下来用一个案例来演示这2个构造方法的使用,如例所示。
程序的运行结果如图所示。
在例中,首先使用Date类空参构造方法创建了一个日期并打印,这是创建的当前日期,接着创建了第二个日期并打印,传入了一个long型的参数,这个参数表示的是从GMT(格林尼治标准时间)的1970年1月1日00:00:00这一时刻开始,距离这个参数毫秒数后的日期。
Ø
Calendar类
Calendar类可以将取得的时间精确到毫秒。Calendar类是一个抽象类,它提供了很多常量,先来了解一下Calendar类常用的常量,如表所示。
常量
功能描述
public static final int YEAR
获取年
public static final int MONTH
获取月
public static final int DAY_OF_MONTH
获取日
public static final int HOUR_OF_DAY
获取小时,24小时制
public static final int MINUTE
获取分
public static final int SECOND
获取秒
public static final int MILLISECOND
获取毫秒
表列出了Calendar类常用的常量,它还有一些常用方法,如表所示。
方法声明
功能描述
static Calendar getInstance()
使用默认时区和语言环境获得一个日历。
static Calendar getInstance(Locale aLocale)
使用默认时区和指定语言环境获得一个日历。
int get(int field)
返回给定日历字段的值。
boolean after(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
boolean before(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
表列出了Calendar类常用的方法,接下来通过一个案例来学习这些常量和方法的使用,如例所示。
程序的运行结果如图所示。
在例中,首先调用Calendar类的静态方法getInstance()获取Calendar实例,然后通过get(int field)方法,分别获取Calendar实例中相应常量字段的值。
Ø
DateFormat类
前面讲解过Date类,它获取的时间明显不便于阅读,实际开发中需要对日期进行格式化操作,Java提供了DateFormat类支持日期格式化,该类是一个抽象类,需要通过它的一些静态方法来获取它的实例,先来了解它的常用方法,
方法声明
功能描述
static DateFormat getDateInstance()
获取日期格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getDateInstance(int style, Locale aLocale)
获取日期格式器,该格式器具有给定语言环境的给定格式化风格。
static DateFormat getDateTimeInstance()
获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale)
获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格。
String format(Date date)
将一个 Date 格式化为日期/时间字符串。
Date parse(String source)
从给定字符串的开始解析文本,以生成一个日期。
表中列举了DateFormat类的常用方法,接下来用一个案例来演示这些方法的使用,如例所示。
程序的运行结果如图所示。
例中,首先分别调用DateFormat类的4个静态方法获得DateFormat实例,然后对日期和时间格式化,可以看出空参的构造方法是使用默认语言环境和风格进行格式化的,而参数指定了语言环境和风格的构造方法,格式化的日期和时间更符合中国人阅读习惯。
Ø
SimpleDateFormat类
讲解了使用DateFormat类格式化日期和时间,如果想得到特殊的日期显示格式,可以通过DateFormat的子类SimpleDateFormat类来实现,它位于java.text包中,要自定义格式化日期,需要有一些特定的日期标记表示日期格式,先来了解一下常用日期标记,如表所示。
日期标记
功能描述
y
年,需要用yyyy表示年份的4位数字
M
月份,需要用MM表示月份的2位数字
d
天数,需要用dd表示天数的2位数字
H
小时,需要用HH表示小时的2位数字
m
分钟,需要用mm表示分钟的2位数字
s
秒数,需要用ss表示秒数的2位数字
S
毫秒,需要用SSS表示毫秒的3位数字
G
公元,只需写一个G表示公元
表中列出了表示日期格式的日期标记,在创建SimpleDateFormat实例时需要用到它的构造方法,它有4个构造方法,其中有一个是最常用的,具体示例如下。
如上所示的构造方法有一个String类型的参数,该参数使用日期标记表示格式化后的日期格式,另外,因为SimpleDateFormat类继承了DateFormat类,所以它可以直接使用父类方法格式化日期和时间,接下来用一个案例来演示SimpleDateFormat类的使用。
如例所示。
程序的运行结果如图所示。
在例中,首先使用空参的构造方法创建SimpleDateFormat实例,然后调用父类的format(Date date)方法,格式化当前日期和时间并打印输出,接着指定参数为“yyyy-MM-dd”创建SimpleDateFormat实例,按自定义的格式显示日期和时间,最后指定参数为“Gyyyy-MM-dd hh:mm:ss:SSS”创建SimpleDateFormat实例,按自定义的格式显示日期和时间。日期和时间的自定义格式多种多样,读者可以根据需求扩展更多的格式,这里就不再赘述。
Ø
JDK8.0新特性——日期时间API
Java 8之前的Date和Calendar都是线程不安全的,而且使用起来比较麻烦,Java 8提供的全新的时间日期API有:LocalDate(日期)、LocalTime(时间)、LocalDateTime(时间和日期) 、Instant (时间戳)、Duration(用于计算两个“时间”间隔)、Period(用于计算两个“日期”间隔)等。接下来将通过案例演示这些API的用法。
1. 本地化日期时间 API
LocalDate/LocalTime和LocalDateTime类可以用在不需要必须处理时区的情况中。
运行以上代码,输出结果如图所示。
2. 使用时区的日期时间API
如果需要考虑到时区,就可以使用时区的日期时间API,演示代码如下所示。
以上代码运行结果如图所示。
3. 获取指定的时间日期
在LocalDate方法中直接传入对应的年月日,演示代码如下所示。
在前面讲解过switch条件语句,读者一定不陌生,它可以接收的类型有int、byte、char、short和enum,在JDK7.0后,switch语句的判断条件增加了对字符串类型的支持,接下来通过一个案例来演示switch语句判断条件对字符串类型的支持,如例所示。
程序的运行结果如图所示。
例中,首先创建Scanner对象,用于接收键盘输入的内容,然后将接收到的字符串当做switch的判断条件传入,当输入内容为“Java”时,查询并打印出“8教室”,程序结束并释放Scanner资源。
Ø
JDK7.0新特性——switch语句支持字符串类型
在前面讲解过switch条件语句,大家一定不陌生,它可以接收的类型有int、byte、char、short和enum,在JDK7.0后,switch语句的判断条件增加了对字符串类型的支持,接下来通过一个案例来演示switch语句判断条件对字符串类型的支持,如例所示。
小结:Java语言程序设计— Java基础类库—System类与Runtime类、Math类与Random类、日期操作类、JDK7.0新特性——switch语句支持字符串类型
通过学习,读者能够掌握Java基础类库中常用的API。重点要了解的是Java提供了大量的API,如果想更深入的学习,可以查看JDK使用文档,多查多用才能熟练掌握。
回复
使用道具
举报
返回列表
发帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
C++
C语言
快速回复
返回顶部
返回列表