第一讲、System类
一、概述
1、System类是一个描述系统信息的类,它提供可访问与系统相关的信息和资源的API;
2、System类中所有属性和方法都是静态的,使用时通过System类名直接调用;
3、通过System类可以动态的加载文件和库;
4、System类中提供了例如快速复制数组等一些实用方法;
5、System将构造函数私有化(只有一个私有的无参构造,并且这个构造函数什么代码也没执行),使类本身不能实例化(可以通过反射实例化)。
6、字段摘要:
in:标准输入流。in提供输入数据,默认情况下对应于键盘输入,也可由主机环境或用户指定另一个输入源。
out:标准输出流。out接受输出数据,默认情况下对应显示器(控制台,或者说屏幕),也可由主机环境或用户指定另一个输出目标(例如文件系统)。
err:标准错误输出流。err接受输出数据,默认情况下对应于控制台,也可由主机环境或用户指定另一个输出目标。按照惯例,err用于输出错误信息。
二、方法
1、获取系统的属性信息
public static Properties getProperties()
说明:
1)、此方法返回一个双列集合(即Key-Value键值对)Properties对象;
2)、Properties继承于Hashtable,实现了Map集合,因此可以像操作Map集合一样操作该集合中的元素;
3)、对该对象中的元素进行修改将直接作用于整个应用;
4)、该集合中存储的都是字符串,没有泛型定义。
使用示例:
for (Entry entry : System.getProperties().entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
2、自定义特有的系统属性(或设置键指示的系统属性)
public static String setProperties(String key, String value);
说明:
1)、如果指定的key在这个集合中之前就存在,那么此方法执行完后,会返回之前这个属性对应的值。
使用示例:
System.setProperty("data", "custom");// 在系统中自定义一个data属性,设置值为custom
System.out.println(System.getProperty("data"));// 取出自定义的data
3、获取指定属性信息
public static String getProperty(String key)
说明:
1)、此方法会进行安全检查(sm.checkPropertyAccess(key));
2)、如果指定的key在集合中存在,则返回这个key对应的value;否则返回null。
使用示例:
// 这里获取当前操作系统名称,可以做一些系统方面的信息验证,根据不同系统特性做不同处理
System.out.println(System.getProperty("os.name"));
4、在jvm启动时,动态加载一些属性信息
通过命令设置系统属性:java -D<name>=<value>
使用示例:通过java -Dmydata=1111111 SystemDemo运行SystemDemo
System.out.println(System.getProperty("mydata"));
第二讲 Runtime类
一、概述
1、每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接;
2、应用程序不能创建自己的Runtime类实例,可以通过getRuntime()方法获取当前运行时;
3、该类中没有提供构造函数,这说明不可以通过new创建对象,那么会直接想到该类中的方法都是静态的。查阅API发现,该类中除了静态方法还有非静态方法,这说明该类肯定提供了获取本类对象的方法,而且该方法是静态的,并且返回值类型是本类类型。
3、由以上特点可以看出Runtime类使用了单例模式设计完成。
二、方法
1、获取与当前Java应用程序相关的Runtime对象
public static Runtime getRuntime()
使用示例:
Runtime runtime = Runtime.getRuntime();
2、在单独的进程中执行指定的字符串命令
public Process exec(String command) throws IOException
说明:
1、此方法创建一个本机进程,并返回Process子类的一个实例,该实例可以用来控制进程并获取相关信息;
2、Process类提供了执行从进程输入、执行输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。
使用示例:
// 获取与当前Java应用程序相关的Runtime对象
Runtime runtime = Runtime.getRuntime();
// 执行记事本程序
runtime.exec("notepad");
// 用记事本打开指定的java源文件
runtime.exec("notepad " + System.getProperty("user.dir") + "/src/Test.java");
3、Process类销毁进程的方法
abstract public void destroy()
说明:
1、杀掉子进程。强制终止此Process对象指向的子进程。
使用示例:
// 执行记事本程序
Process process = runtime.exec("notepad");
// 销毁(杀掉)process指向的进程(exec创建的那个进程)
process.destroy();
第三讲 时间类
一、Date类
1、概述
1.1、Date类表示特定的瞬间,精确到毫秒;
1.2、Date类允许将日期解释为年、月、日、小时、分钟和秒;允许格式化和解析日期字符串;
1.3、Date类不易于实现国际化,应使用Calendar类实现日期和时间字段之间的转换,使用DateFormat类来格式化和解析日期字符串;
1.4、Date类默认显示格式:Fri May 29 01:36:38 CST 2015
2、自定义格式
默认的格式不足以满足每个人的需求,那么这就需要自定义格式了。因为Date类中大部分方法已过世,因此只能找其子类来实现。子类DateFormat中有format可以实现,但是DateFormat是抽象类,不能被实例化。但是我们可以使用DateFormat的子类SimplDateFormat来定义时间格式。
使用示例:
// 1、创建Date对象
Date date = new Date();
// 2、将日期格式封装到SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
// 3、调用format格式化指定Date对象
String time = sdf.format(date);
System.out.println(time);
二、Calendar类
1、概述
1、Calendar是一个抽象类,它为特定与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法(例如获取下星期的日期、获取当前日期等);
2、Calendar提供了一个类方法getInstance,以获得此类型的一个实例对象,这个实例对象的日历字段由当前日期和时间初始化。
2、方法
public int get(int field)
2.1、常用时间(日期)字段值
2.1.1、获取年份:Calendar.YEAR,例如:c.get(Calendar.YEAR)
2.1.2、获取月份:Calendar.MONTH,例如:c.get(Calendar.MONTH)
2.1.3、获取日期:Calendar.DAY_OF_MONTH,例如:c.get(Calendar.DAY_OF_MONTH)
2.1.4、获取星期:Calendar.DAY_OF_WEEK,例如:c.get(Calendar.DAY_OF_WEEK)
2.1.5、获取小时:Calendar.HOUR_OF_DAY,例如:c.get(Calendar.HOUR_OF_DAY)
2.1.6、获取分钟:Calendar.MINUTE,例如:c.get(Calendar.MINUTE)
2.1.7、获取秒数:Calendar.SECOND,例如:c.get(Calendar.SECOND)
2.1.8、获取当前月的星期数:Calendar.WEEK_OF_MONTH,例如:c.get(Calendar.WEEK_OF_MONTH)
2.1.9、获取当前年的星期数:Calendar.WEEK_OF_YEAR,例如:c.get(Calendar.WEEK_OF_YEAR)
2.2、设置时间(日期)
2.2.1、根据日历的规则,为给定的日历字段添加或减去指定的时间量:
public void add(int field, int amount)
使用示例(设置年份为三年后):
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR));
c.add(Calendar.YEAR, 3);
System.out.println(c.get(Calendar.YEAR));
2.2.2、获取指定日历字段的值:
public void get(int field)
使用示例(获取年份):
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR));
2.2.3、将给定的日历字段设置为给定值:
public void set(int field, int value)
使用示例(设置年份为2017年):
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2017);
System.out.println(c.get(Calendar.YEAR));
2.2.4、设置日历字段
YEAR
、
MONTH
和
DAY_OF_MONTH
的值:
public void set(int year, int month, int date)
使用示例(设置为2017年1月1日):
Calendar c = Calendar.getInstance();
c.set(2017, 0, 1);// 月份从0开始,0表示一月,11表示十二月
System.out.println(c.get(Calendar.YEAR) + "年");
System.out.println(c.get(Calendar.MONTH) + 1 + "月");
System.out.println(c.get(Calendar.DATE) + "日");
第四讲 Math类
一、概述
Math
类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
二、方法
1、取绝对值:
public static int abs(int a)
使用示例:
System.out.println(Math.abs(-1));// 控制台输出1
2、取大于指定数的最小整数(可以是等于):
public static double ceil(double a)
使用示例:
System.out.println(Math.ceil(2.3));// 返回3.0
3、取小于指定数的最大整数(可以是等于):
public static double floor(double a)
使用示例:
System.out.println(Math.floor(2.9));// 返回2.0
4、幂运算,返回第一个参数的第二个参数次幂的值:
public static double pow(double a, double b)
使用示例:
// 幂运算,返回第一个参数的第二个参数次幂的值(次方,如下求2的3次方)
System.out.println(Math.pow(2, 3));
5、最大值,返回两个数中较大的值:
public static int max(int a, int b)
使用示例:
// 最大值,返回两个数中较大的值
System.out.println(Math.max(2, 3));
6、最小值,返回两个数种较小的值:
public static int min(int a, int b)
使用示例:
// 最小值,返回两个数种较小的值
System.out.println(Math.min(2, 3));
7、伪随机数,返回一个大于等于0.0且小于1.0的值:
public static double random()
使用示例:
// 伪随机数,返回一个大于等于0.0且小于1.0的值
System.out.println(Math.random());
三、Random类
1、概述
Random类是java.util下的一个类,此类对象用于获取一个伪随机数。与Math的random()一样,不过Random类有自身的方法,可以将相应的随机数强制转换为指定的基本类型。
此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改;
如果用相同的种子创建两个 Random
实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列;
Random
类实现的算法使用一个 protected
实用工具方法,每次调用它最多可提供 32 个伪随机生成的位。
2、常用方法
public int nextInt(int n)
使用示例:
Random random = new Random();
// 返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。
System.out.println(random.nextInt(10));// 这句代码随机出来的数范围在0-9
// 随机出1-10的数字
System.out.println(random.nextInt(10) + 1);