分享
 
 
 

Java语言深入:对java.lang的研究下

王朝java/jsp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

5、

System

System类保存静态方法和变量的集合。标准的输入,输出和Java运行时错误输出存储在变量in,out和err中。由System类定义的方法列在表14-11中。注意当所做操作是安全方式所不允许的时,许多方法引发一个安全异常(SecurityException)。应当注意的另一点是:Java 2不赞成使用runFinalizersonExit( )方法。该方法是在Java 1.1中增加的,同时也被证明是不可靠的。

让我们看一看System类的一些普遍用法。

表11

由Sysem定义的方法

方法 描述

static void arraycopy(Object source, int

sourceStart, Object target, int targetStart,

int size) 复制数组。被复制的数组由source传递,而source中开始复制数组时的下标由sourceStart传递。接收复制的数组由target传递。而target中开始复制数组时的下标由targetStart传递。Size是被复制的元素的个数

static long currentTimeMillis( )

返回自1970年1月1日午夜至今的时间,时间单位为毫秒。

static void exit(int exitCode)

暂停执行,返回exitCode值给父进程(通常为操作系统)。按照约定,0表示正常退出,所有其他的值代表某种形式的错误

static void gc( )

初始化垃圾回收

static Properties getProperties( )

返回与Java运行系统有关的属性类(Properties class)将在第15章中介绍)

static String getProperty(String which)

返回与which有关的属性。如果期望的属性没有被发现,返回一个空对象(null object)

static String getProperty(String which,

String default) 返回一个与which有关的属性。如果期望的属性没有被发现,则返回default

static SecurityManager getSecurityManager( )

返回当前的安全管理程序,如果没有安装安全管理程序,则返回一个空对象(null object)

static native int identityHashCode(Object obj)

返回obj的特征散列码

static void load(String libraryFileName)

载入其文件由libraryFileName指定的动态库,必须指定其完全路径

static void loadLibrary(String libraryName)

载入其库名为libraryName的动态库

static String mapLibraryName(String lib)

对应名为lib的库,返回一个指定平台的名字(在Java 2中新增加的)

static void runFinalization( )

启动调用不用的但还不是回收站中的对象的finalize( )方法。

static void setErr(PrintStream eStream)

设置标准的错误(err)流为iStream

static void setIn(InputStream iStream)

设置标准的输入(in)流为oStream

static void setOut(PrintStream oStream) 设置标准的输出(out)流eStream

static void

setProperties(Properties sysProperties) 设置由sysProperties指定的当前系统属性

Static String setProperty(String which,

String v)

将v值赋给名为which的属性(在Java 2中新增加的)

static void setSecurityManager ( SecurityManager secMan) 设置由secMan指定的安全管理程序

5.1、

使用currentTimeMillis( )记录程序执行的时间

可以发现System类的一个特别有意义的用法是利用currentTimeMillis( )方法来记录你的程序的不同部分的执行时间。currentTimeMillis( )方法返回自从1970年1月1号午夜起到现在的时间,时间单位是毫秒。如果要记录你的程序中一段有问题程序的运行时间可以在这段程序开始之前存储当前时间,在该段程序结束之际再次调用currentTimeMillis( )方法。执行该段程序所花费的时间为其结束时刻的时间值减去其开始时刻的时间值。下面的程序说明了这一点:

// Timing program execution.

class Elapsed {

public static void main(String args[]) {

long start, end;

System.out.println("Timing a for loop from 0 to 1,000,000");

// time a for loop from 0 to 1,000,000

start = System.currentTimeMillis(); // get starting time

for(int i=0; i

end = System.currentTimeMillis(); // get ending time

System.out.println("Elapsed time: " + (end-start));

}

}

这里是程序运行的一个输出样本(记住你的程序的运行结果可能与此不同):

Timing a for loop from 0 to 1,000,000

Elapsed time: 10

5.2、

使用arraycopy( )

使用arraycopy( )方法可以将一个任意类型的数组快速地从一个地方复制到另一个地方。这比使用Java中编写的循环要快的多。下面是一个用arraycopy( )方法复制两个数组的例子。首先,将数组a复制给数组b,接下来,数组a中的所有元素向后移一位,然后数组b中元素向前移一位。

// Using arraycopy().

class ACDemo {

static byte a[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };

static byte b[] = { 77, 77, 77, 77, 77, 77, 77, 77, 77, 77 };

public static void main(String args[]) {

System.out.println("a = " + new String(a));

System.out.println("b = " + new String(b));

System.arraycopy(a, 0, b, 0, a.length);

System.out.println("a = " + new String(a));

System.out.println("b = " + new String(b));

System.arraycopy(a, 0, a, 1, a.length - 1);

System.arraycopy(b, 1, b, 0, b.length - 1);

System.out.println("a = " + new String(a));

System.out.println("b = " + new String(b));

}

}

正如从下面的输出中看到的那样,可以使用相同的源和目的在任一方向进行复制:

a = ABCDEFGHIJ

b = MMMMMMMMMM

a = ABCDEFGHIJ

b = ABCDEFGHIJ

a = AABCDEFGHI

b = BCDEFGHIJJ

5.3 、 环境属性

下面的属性在Java 2的所有环境中可以使用:

file.separator java.vendor.url os.arch

java.class.path java.version os.name

java.class.version java.vm.name os.version

java.ext.dirs java.vm.specification.name Path.separator

java.home java.vm.specification.vendor User.dir

java.specification.name java.vm.specification.version User.home

java.specification.vendor java.vm.vendor User.name

java.specification.version java.vm.version

java.vendor line.separator

可以通过调用System.getProperty( )方法来获得不同环境变量的值。例如下面的程序显示当前用户目录的路径:

class ShowUserDir {

public static void main(String args[]) {

System.out.println(System.getProperty("user.dir"));

}

}

6、

Object

正如我们在第1部分所提及的,Object类是其他所有类的一个超类。表14-12给出了Object类中定义的方法,这些方法对于每一个对象都是可用的。

表12

由Object定义的方法

方法 描述

Object clone( )

Throws

CloneNotSupportedException 创建一个与调用对象一样的新对象

Boolean equals(Object object) 如果调用对象等价于object返回true

void finalize( )

throws Throwable 默认的finalize( )方法。常常被子类重载

final Class getClass( )

获得描述调用对象的Class对象

int hashCode( )

返回与调用对象关联的散列码

final void notify( )

恢复等待调用对象的线程的执行

final void notifyAll( )

恢复等待调用对象的所有线程的执行

String toString( )

返回描述对象的一个字符串

final void wait( )

throws InterruptedException 等待另一个执行的线程

final void wait(long milliseconds)

throws InterruptedException 等待直至指定毫秒数的另一个执行的线程

final void wait(long milliseconds,

int nanoseconds)

throws InterruptedException 等待直至指定毫秒加毫微秒数的另一个执行的线程

7、

使用clone( )和Cloneable接口

由Object类定义的绝大部分方法在本书其他部分讨论。而一个特别值得关注的方法是clone( )。clone( )方法创建调用它的对象的一个复制副本。只有那些实现Cloneable接口的类能被复制。

Cloneable接口没有定义成员。它通常用于指明被创建的一个允许对对象进行位复制(也就是对象副本)的类。如果试图用一个不支持Cloneable接口的类调用clone( )方法,将引发一个CloneNotSupportedException异常。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有