栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

JAVA基础编程——System

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA基础编程——System

好多编程语言都提供了和系统的相关操作方法,JAVA也不例外。JAVA中常用的系统方法有:

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) // Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array.
static String clearProperty(String key) // Removes the system property indicated by the specified key.
static Console console() // Returns the unique Console object associated with the current Java virtual machine, if any.
static long currentTimeMillis() // Returns the current time in milliseconds.
static void exit(int status) // Terminates the currently running Java Virtual Machine.
static void gc() // Runs the garbage collector in the Java Virtual Machine.
static Map getenv() // Returns an unmodifiable string map view of the current system environment.
static String getenv(String name) // Gets the value of the specified environment variable.
static System.Logger getLogger(String name) // Returns an instance of Logger for the caller's use.
static System.Logger getLogger(String name, ResourceBundle bundle) // Returns a localizable instance of Logger for the caller's use.
static Properties getProperties() // Determines the current system properties.
static String getProperty(String key) // Gets the system property indicated by the specified key.
static String getProperty(String key, String def) // Gets the system property indicated by the specified key.
static SecurityManager getSecurityManager() // Deprecated, for removal: This API element is subject to removal in a future version.This method is only useful in conjunction with the Security Manager, which is deprecated and subject to removal in a future release.
static int identityHashCode(Object x) // Returns the same hash code for the given object as would be returned by the default method hashCode(), whether or not the given object's class overrides hashCode().
static Channel inheritedChannel() // Returns the channel inherited from the entity that created this Java virtual machine.
static String lineSeparator() // Returns the system-dependent line separator string.
static void load(String filename) // Loads the native library specified by the filename argument.
static void loadLibrary(String libname) // Loads the native library specified by the libname argument.
static String mapLibraryName(String libname) // Maps a library name into a platform-specific string representing a native library.
static long nanoTime() // Returns the current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds.
static void runFinalization() // Deprecated, for removal: This API element is subject to removal in a future version.Finalization has been deprecated for removal.
static void setErr(PrintStream err) // Reassigns the "standard" error output stream.
static void setIn(InputStream in) // Reassigns the "standard" input stream.
static void setOut(PrintStream out) // Reassigns the "standard" output stream.
static void setProperties(Properties props) // Sets the system properties to the Properties argument.
static String setProperty(String key, String value) // Sets the system property indicated by the specified key.
static void setSecurityManager(SecurityManager sm) // Deprecated, for removal: This API element is subject to removal in a future version.This method is only useful in conjunction with the Security Manager, which is deprecated and subject to removal in a future release.

比如常见的统计操作计算时间:

public class Demo {
	public static void main(String[] args) throws Exception {
		long tic = System.currentTimeMillis();
		String str = "";
		
		for(int i = 0;i < 10000000;++i) {}
		
		long toc = System.currentTimeMillis();
		System.out.println("TIME IS " + (toc - tic));
	}
}

上面的时间单位为ms。

同时上边System中也存在gc方法:

    
    public static void gc() {
        Runtime.getRuntime().gc();
    }

从上面的结果来看,System中的gc方法其实还是Runtime中的gc方法。

同时在C/C++中还存在一个析构函数的概念,构造方法在对象构造时调用,析构方法在对象被销毁时调用,而在C/C++可以主动free/delete某个对象,这样就调用了析构方法。而在JAVA中的实例化对象的回收是由JVM自动进行的,那么如果想要在对象被销毁或回收时进行某种操作的话,就可以使用下面的方法:

protected void finalize() throws Throwable

可以测试一下上面的方法:

class A {
    public A() {
	    System.out.println("Constructor");
	}
	
	protected void finalize() throws Throwable {
	    System.out.println("finalize");
	}
}

public class Demo {
	public static void main(String[] args) throws Exception {
		A a = new A();
		
		a = null;
		
		System.gc();
	}
}

执行结果为:

Constructor
finalize

上边的finalize从某种意义上表示了析构方法的操作,而之所以throws出的是Throwable表示不论出现Exception或Error,都不会导致程序中断执行。

对象克隆

克隆就是对象的复制,在Object类中存在clone方法用于对象的clone:

protected Object clone() throws CloneNotSupportedException

这种操作有点类似C/C++中的拷贝构造。同时该方法本身使用了protected访问权限,这样当在不同的包产生对象时将无法调用Object类中的clone方法,因此就需要通过子类覆写clone方法(调用父类的clone方法),才可以正常完成克隆操作。

而在clone方法上抛出的错误为“CloneNotSupportedException”。这是因为不是所有的对象都可以被克隆,可以克隆的对象一般会实现Cloneable接口,以便实现克隆操作。

class A implements Cloneable {
	private String name;
	
    public A(String name) {
	    this.name = name;
	}
	
	String getName() {
	    return name;
	}
	
	@Override
	public Object clone() throws CloneNotSupportedException {
	    return super.clone();
	}
}

public class Demo {
	public static void main(String[] args) throws Exception {
		A a = new A("ABC");
		System.out.println(a.getName());
		
		A aa = (A)a.clone();
		System.out.println(aa.getName());
	}
}

执行结果为:

ABC
ABC

上面的代码中实现了Cloneable接口,同时覆写了clone方法,这样就能够调用clone方法,实现克隆操作。这里克隆出来的实例化对象和原对象占据不同的存储空间,不互相影响。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号