Java中哪些类有println方法,Java中的系统类 - Properties,System.out.println

Java中的系统类 - Properties,System.out.println

java中的系统类是核心类之一,我从未见过任何不使用它的java开发人员。记录调试信息的最简单方法之一是System.out.print()功能。系统类是最终的,它的所有成员和方法都是静态的,因此我们不能通过继承来子类化和覆盖它的行为。

Java中的系统类

java中的系统类不提供任何公共构造函数。所以我们不能实例化这个类(为了论证,我们可以使用Java Reflection实例化它),这就是为什么它的所有方法都是静态的。

在这里,我们将研究java.lang.System类提供的不同功能。

Java系统阵列复制

Java System类提供了一种将数据从一个数组复制到另一个数组的本机方法。这是一个本机实现,并且应该比其他复制数组数据的方式更快。

IndexOutOfBoundsException如果复制会导致数组边界外的数据访问,则抛出系统数组复制方法。ArrayStoreException如果源数组中的元素由于类型不匹配而无法存储到目标数组中,并且如果源数组或目标数组为null ,则也会抛出NullPointerException。

下面的示例程序显示了如何使用此方法。int [] array1 = {1,2,3,4,5};int[] array2 = {10,20,30,40,50};

//copying first two elements from array1 to array2 starting from index 2 of array2System.arraycopy(array1, 0, array2, 2, 2);

System.out.println(Arrays.toString(array2)); //prints "[10, 20, 1, 2, 50]"

AAffA0nNPuCLAAAAAElFTkSuQmCC

Java系统属性

System类包含获取System属性列表,获取特定属性,设置系统属性和清除任何现有属性的有用方法。下面的示例程序显示了不同的方法及其用法。//Get System Defined PropertiesProperties systemProps = System.getProperties();Set keySet = systemProps.keySet();for(Object obj : keySet){String key = (String) obj;

System.out.println("{"+obj+"="+systemProps.getProperty(key)+"}");}//Get Specific PropertySystem.out.println(System.getProperty("user.country"));//Clear property exampleSystem.clearProperty("user.country");System.out.println(System.getProperty("user.country")); //print null//Set System propertySystem.setProperty("user.country", "IN");System.out.println(System.getProperty("user.country")); //prints "IN"

如果我们在java程序中运行上面的代码,我们得到以下输出。请注意,输出将根据您的系统配置而有所不同。{java.runtime.name=Java(TM) SE Runtime Environment}{sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib}{java.vm.version=23.5-b02}{gopherProxySet=false}{java.vm.vendor=Oracle Corporation}{java.vendor.url=http://java.oracle.com/}{path.separator=:}{java.vm.name=Java HotSpot(TM) 64-Bit Server VM}{file.encoding.pkg=sun.io}{user.country=US}{sun.java.launcher=SUN_STANDARD}{sun.os.patch.level=unknown}{java.vm.specification.name=Java Virtual Machine Specification}{user.dir=/Users/pankaj/CODE/MyProject}{java.runtime.version=1.7.0_09-b05}{java.awt.graphicsenv=sun.awt.CGraphicsEnvironment}{java.endorsed.dirs=/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/endorsed}{os.arch=x86_64}{java.io.tmpdir=/var/folders/f1/25ry1vy5675_30mkwqp7p46r0000gn/T/}{line.separator=}{java.vm.specification.vendor=Oracle Corporation}{os.name=Mac OS X}{sun.jnu.encoding=US-ASCII}{java.library.path=/Users/pankaj/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.}{java.specification.name=Java Platform API Specification}{java.class.version=51.0}{sun.management.compiler=HotSpot 64-Bit Tiered Compilers}{os.version=10.8.3}{http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16}

{user.home=/Users/pankaj}

{user.timezone=}

{java.awt.printerjob=sun.lwawt.macosx.CPrinterJob}

{file.encoding=MacRoman}

{java.specification.version=1.7}

{java.class.path=/Users/pankaj/CODE/bin:/Users/pankaj/}

{user.name=pankaj}

{java.vm.specification.version=1.7}

{sun.java.command=com.journaldev.util.SystemClassExamples}

{java.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre}

{sun.arch.data.model=64}

{user.language=en}

{java.specification.vendor=Oracle Corporation}

{awt.toolkit=sun.lwawt.macosx.LWCToolkit}

{java.vm.info=mixed mode}

{java.version=1.7.0_09}

{java.ext.dirs=/Users/pankaj/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java}

{sun.boot.class.path=/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/lib/JObjC.jar:/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre/classes}

{java.vendor=Oracle Corporation}

{file.separator=/}

{java.vendor.url.bug=http://bugreport.sun.com/bugreport/}

{sun.io.unicode.encoding=UnicodeBig}

{sun.cpu.endian=little}

{socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16}{ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16}

{sun.cpu.isalist=}

US

null

IN

AAffA0nNPuCLAAAAAElFTkSuQmCC

读写控制台

Java System Class提供了一种获取与正在运行的JVM关联的唯一Console对象的方法。

Console类在1.6 中的Java IO中引入,提供了有用的方法来打印格式化数据和安全地读取密码。

如果没有控制台与当前JVM关联,例如,通过Eclipse运行或作为后台程序运行,则返回null。

下面的示例程序显示从System类获取Console对象并使用它。Console console = System.console();if(console != null){

Calendar c = new GregorianCalendar();    console.printf("Welcome %1$s%n", "Pankaj"); //prints "Welcome Pankaj"

console.printf("Current time is: %1$tm %1$te,%1$tY%n", c); //prints "Current time is: 08 5,2013"

console.flush();} else{//No console is attached when run through Eclipse, background process

System.out.println("No Console attached");}

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

java系统获取当前时间

java中的系统类提供了两种获取当前时间的方法,以毫秒和纳秒为单位。

我们可以用毫秒来创建Date对象,纳米时间主要用于科学实验或基准测试。

下面的代码片段显示了使用System类方法获取与时间相关的信息。long currentTimeMillis = System.currentTimeMillis();Date date = new Date(currentTimeMillis);System.out.println("Current time in millis="+currentTimeMillis);System.out.println(date); //prints 2013-08-05long nanoTime = System.nanoTime();System.out.println("Current nano time="+nanoTime);

AAffA0nNPuCLAAAAAElFTkSuQmCC

Java系统环境变量

Java System类提供了一种以Map形式获取环境变量数据的方法,返回的Map是不可修改的,它包含String对象中的键值对。//get unmodifiable environment variables mapMap envMap = System.getenv();Set keySet = envMap.keySet();for(String key : keySet){

System.out.println("Key="+key+",value="+envMap.get(key));}//Get Specific environment variableString pathValue = System.getenv("PATH");System.out.println("$PATH="+pathValue);

AAffA0nNPuCLAAAAAElFTkSuQmCC

安全经理

SecurityManager类用于实现应用程序的安全策略,System类提供有用的方法来获取当前运行的JVM的SecurityManager并为应用程序设置SecurityManager。SecurityManager secManager = System.getSecurityManager();if(secManager == null){

System.out.println("SecurityManager is not configured");}SecurityManager mySecManager = new SecurityManager();System.setSecurityManager(mySecManager);secManager = System.getSecurityManager();if(secManager != null){

System.out.println("SecurityManager is configured");}

AAffA0nNPuCLAAAAAElFTkSuQmCC

文件IO操作

系统类包含三个字段 - 输入,输出和错误。它们用于从InputStream读取数据并将数据写入OutputStream。

System类提供了设置不同类型的InputStream和OutputStream以用于记录目的的方法。

例如,我们可以将FileOutputStream设置为out和err字段,以便将控制台输出写入文件。

下面的代码片段显示了这些字段的用法,以及如何使用setter方法设置它们。try(FileInputStream fis = new FileInputStream("input.txt");

FileOutputStream fos = new FileOutputStream("server.log");) {//set input streamSystem.setIn(fis);char c = (char) System.in.read();System.out.print(c); //prints the first character from input stream//set output streamSystem.setOut(new PrintStream(fos));System.out.write("Hi Pankaj\n".getBytes());//set error streamSystem.setErr(new PrintStream(fos));System.err.write("Exception message\n".getBytes());} catch (IOException e) {

e.printStackTrace();}

请注意在上面的try-block中使用Java 7尝试使用资源功能。

其他任务

System类为其他任务提供了一些其他方法。例如,要运行垃圾收集器,加载外部库,将库名称映射到特定于操作系统的字符串,对等待完成的任何对象运行finalize方法并终止JVM。Copy//run the garbage collectorSystem.gc();System.out.println("Garbage collector executed.");//map library nameString libName = System.mapLibraryName("os.name");System.out.println("os.name library="+libName);//load external librariesSystem.load("lixXYZ.so");System.loadLibrary("libos.name.dylib");//run finalizationSystem.runFinalization();//terminates the currently running JVMSystem.exit(1);// this line will never print because JVM is terminatedSystem.out.println("JVM is terminated");

这都是关于java中的System类的,我希望它能帮助你最大限度地利用java System类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值