System类包含一些有用的类字段和方法。它不能被实例化。
在System类提供的属性中,有“标准”输入流、“标准”输出流和“标准”错误输出流。
(1)public static final InputStream in:“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
(2)public static final PrintStream out:“标准”输出流。此流已打开并准备接收输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。编写一行输出数据的典型方式是:System.out.println(data)。
(3)public static final PrintStream err:“标准”错误输出流。此流已打开并准备接收输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
System类主要定义了一些与系统相关的属性和方法,这些成员都是静态的。常用方法说明如下:
(1)public static void exit(int status):终止当前正在运行的Java虚拟机。参数用作状态码;根据惯例,非0的状态码表示异常终止。
(2)public static void gc():运行垃圾回收器。调用gc方法暗示着Java虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。
(3)public static long current Time Millis():返回以毫秒为单位的当前时间,即返回当前时间与基准时间1970年1月1日午夜之间的时间差(以毫秒为单位测量)。
(4)public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。参数src为源数组,srcPos为源数组中的起始位置,dest为目标数组,dest Pos为目标数组中的起始位置,length为要复制的数组元素的数量。
(5)public static Properties getProperties():确定当前的系统属性。返回一个Properties集合,里面存放的是属性和属性值的关系映射。
(6)public static String getProperty(String key):获取指定键指示的系统属性。
【例7-12】
通过getProperty方法获取系统所有属性或者指定具体键的属性值。
测试类System Test1如图7-11所示。
图7-11 getProperty方法测试
(1)System.getProperty(file.separator)可以获取系统名称分隔符,在Windows中是“\”,在UNIX系统中是“/”,这种写法可以做到平台无关性。
(2)System.getProperty(path.separator)可以获取系统路径分隔符,在Windows中是“;”,在UNIX系统中是“:”,这种写法可以做到平台无关性。(www.xing528.com)
(3)System.getProperty(line.separator)可以获取系统行分隔符,即换行符,在UNIX系统中是“/n”,这种写法可以做到平台无关性。
(4)System.getProperty(user.dir)可以轻松获取当前项目路径。
【例7-13】
通过System.current Time Millis()来获取一个当前时间毫秒数的long型数字。测试用例如图7-12所示。
图7-12 currentTimeMillis方法测试
该测试比较了利用String类和StringBuilder类进行字符串拼接时的时间效率,显然采用后者速度更快。
项目总结
自动拆装箱是JDK 1.5引入的新特性。字符串的处理是开发中非常重要的部分,本项目详细介绍了String类、StringBuffer类和StringBuilder类的使用场景,需要掌握它们的常用方法。正则表达式在开发中很重要,其构造规则是本项目难点,经常用在密码校验、邮箱校验等方面,当然,网上有很多正则表达式借鉴,要求至少能看懂和修改。最后讲解了System类的几个常用方法。
项目作业
1.简述什么是自动装箱和自动拆箱。
2.简述String、StringBuffer和StringBuilder的区别。
3.简述String比较运算符==和equals()方法的区别。
4.验证用户密码以字母开头,长度在6~15之间,只能包含字母、数字和下划线,正则表达式^[a-z AZ]\w{5,14}$是否正确?
5.如何将一个char值、一个char数组、一个int型数值转换成String类型的值?举例说明。
6.如何将字符串"123"转换成字符数组?或者转换成int型值123?如何将字符串"1"转换成字符'1'?
7.给定带路径的字符串,例如“http://192.168.1.1:8080/chapter10/pig.jpg”,利用String类的方法找出字符串末尾的文件名“pig.jpg”。
8.上机实践书中出现的案例,可自由发挥修改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。