java.lang包下的System类

System.out.print()方法可以说是我们最熟悉的一个方法了,从我们最开始用Java写的第一个hello world程序,就用到了这个方法。

public class Test {
	public static void main(String[] args) {
		System.out.print("hello world");
	}
}

System.out.print()方法的最主要的作用就是向控制台输出传入该方法中的字符串。其实System是java.lang包下的一个类,out是Syetem类中的一个PrintStream类型的final静态成员,print()是PrintStream类的实例方法。

下图为Java API文档中的描述:
java.lang包下的System类

构造方法

System类的构造方法是私有的,并且没有写任何语句,所以它是不能被实例化的。
java.lang包下的System类
例如:
java.lang包下的System类

静态成员

在System中,有三个静态成员,分别是PrintStream类型的err、out和InputStream类型的in。

public static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。

例如:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		System.out.print("输入");
		Scanner scan = new Scanner(System.in);
		String read = scan.nextLine();
		System.out.println("输入数据:" + read);
	}
}

如果我们想使用Scanner对象从控制台输入字符串时,需要在构造Scanner对象时传入System.in

public static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

对于简单独立的 Java 应用程序,输出数据的典型方式是:System.out.println(data);

public static final PrintStream err“标准”错误输出流。此流已打开并准备接受输出数据。

通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。

常用方法

public static Properties getProperties()

该方法用于确定当前的系统属性。例如:

public class Test {
	public static void main(String[] args) {
		
		System.out.println(System.getProperties());
	}
}

java.lang包下的System类
其中的键和相关描述为:

java.lang包下的System类

public static String getProperty(String key)

此方法用于指定键指示的系统属性。

public static void arraycopy(Object src,int srcPos,Object dest,
int destPos,int length)

该方法从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。

如果参数 src 和 dest 引用相同的数组对象,则复制的执行过程就好像首先将 srcPos 到 srcPos+length-1 位置的组件复制到一个带有 length 组件的临时数组,然后再将此临时数组的内容复制到目标数组的 destPos 到 destPos+length-1 位置一样。

如果 dest 为 null,则抛出 NullPointerException 异常。

如果 src 为 null, 则抛出 NullPointerException 异常,并且不会修改目标数组。
例如:

import java.util.Arrays;

public class Test {
	public static void main(String[] args) {
		int[] arr1 = {1,2,3,4,5};
		int[] arr2 = new int[5];
		
		System.arraycopy(arr1, 1, arr2, 1, 3);
		
		System.out.println(Arrays.toString(arr2));
		
	}
}

java.lang包下的System类

public static void gc()

运行垃圾回收器。调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。

调用 System.gc() 实际上等效于调用:Runtime.getRuntime().gc()