java学习笔记(三十五)

System类

1.1 认识System类

System.out.println()本身就是系统提供好的类。out.println()方法也是经常使用到的。

System类是一些与系统相关的属性和方法的集合,在System类中所有的属性都是静态的。


public final class Systemextends ObjectSystem 类包含一些有用的类字段和方法。它不能被实例化。

在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

1.2 System方法

System类中除了可以进行内容的输出外,还可以通过方法取得一个操作的计算时间。

package org.liuchao;

public class SystemDemo01 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long startTime = System.currentTimeMillis();
int sum = 0;
for(int i = 0;i < 30000000;i++){

sum += i;
}
long endTime = System.currentTimeMillis();
System.out.println("计算时间:"+(endTime-startTime)+"毫秒");

}

}


除了这个功能外,还可以列出本机的全部系统属性。


package org.liuchao;

public class SystemDemo01 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
long startTime = System.currentTimeMillis();
int sum = 0;
for(int i = 0;i < 30000000;i++){

sum += i;
}
long endTime = System.currentTimeMillis();
System.out.println("计算时间:"+(endTime-startTime)+"毫秒");
*/
System.getProperties().list(System.out);
}

}
结果:

-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=D:\Program Files\应用软件\netbeans ide\jd...
java.vm.version=20.2-b06
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=CN
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=Service Pack 1
java.vm.specification.name=Java Virtual Machine Specification
user.dir=F:\c++\eclipse se\test01
java.runtime.version=1.6.0_27-b07
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=D:\Program Files\应用软件\netbeans ide\jd...
os.arch=x86
java.io.tmpdir=C:\Users\lenovo\AppData\Local\Temp\
line.separator=

java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows 7
sun.jnu.encoding=GBK
java.library.path=D:\Program Files\应用软件\netbeans ide\jd...
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Client Compiler
os.version=6.1
user.home=C:\Users\lenovo
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GBK
java.specification.version=1.6
user.name=lenovo
java.class.path=F:\c++\eclipse se\test01\bin
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=D:\Program Files\应用软件\netbeans ide\jd...
sun.java.command=org.liuchao.SystemDemo01
java.specification.vendor=Sun Microsystems Inc.
user.language=zh
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.6.0_27
java.ext.dirs=D:\Program Files\应用软件\netbeans ide\jd...
sun.boot.class.path=D:\Program Files\应用软件\netbeans ide\jd...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m...

此处取得的是全部的属性,


1.3 垃圾回收机制


一个对象如果不使用,则肯定要等待进行垃圾收集,垃圾收集可以自动调用和手工调用,手工调用的时候就是调用System.gc()或者Runtime.getRuntime.gc()。但是如果一个对象在回收之前需要做一些收尾的工作,则必须覆写Object类中的:

protected void finalize()throws Throwable

package org.liuchao;
class Person{

private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String toString(){
return "姓名:"+name+",年龄:"+age;
}
public void finalize() throws Throwable{
System.out.println("对象被释放"+this);
}
}
public class SystemDemo01 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person per = new Person("zhannsan",45);
per = null;
System.gc();
System.out.println("haha");
}

}

结果:

haha
对象被释放姓名:zhannsan,年龄:45

注意:只有强制性地调用gc()的时候,才会发现对象回收,当然,,如果不调用,系统也会在一定的时间内自动进行回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值