Logo

郎哥编程

System类的使用

2019-12-08 1036

前面的程序代码中,都会用到System类,来完成字符串和数值的输出。System是Java API核心类库之一,它提供了标准设备的输入与输出功能,默认情况下输出设备是计算机的显示器,输入设备是计算机键盘。System类结构如下图所示:

image.png

System类结构图

从图中可以看出,System类提供的成员(属性)和方法都是静态类型,静态类型的方法和成员(属性)在类被加载后就可以调用,无需实例化(关于类在后面的学习单元会详细讲述)。图中没有全部列出System类提供的方法。感兴趣地可以查阅API文档。

System类的成员属性

System类提供了三个成员属性,分别是err、out、in。其中err和out属于PrintStream类,PrintStream类主要用于输出各种类型数据的格式化形式输出;in属于InputStream类,InputStream类主要用于程序通过不同的数据源获取输入数据,关于PrintStream类和InputStream类的详细介绍请查阅API文档。

案例1:在PbaseUnit8项目unit包下创建SystemSample类。代码如下:

/** 
* @Title: SystemSample.java 
* @Package unit  
* @Description: Java基础知识课程案例  
* @author 编程训练营 
* @version V1.0 
*/ 
 
package unit;
 
/** 
* @ClassName: SystemSample 
* @Description: Java API库的使用(System类的使用)案例1  
* @author 编程训练营
* 
*/
 
public class SystemSample {
 
    /**
     * @Title: main
     * @Description: Java程序入口main方法
     * @param @param args 参数
     *
     * @return void 返回类型 @throws
     */
 
    public static void main(String[] args) {
       int temp1 = 0;
       int tamp2 = 10;
       int result;
       try {
           result = tamp2 / temp1;
           System.out.println("result=" + result);
       } catch (Exception e) {
           System.out.println(e.getMessage());
       }
 
    }
 
}

代码结构分析

程序主要完成两个整型数值相除,并输出结果到屏幕。程序在main方法体内声明了temp1、temp2、result三个整型变量,其中temp1被赋值为0,temp2被赋值为10,result用于存储结果。考虑到两个整数相除时,如果除数为0,Java程序执行时抛出异常错误(Java编译过程发现不了除数为0的错误),因此设置了try…catch…语句。try语句块的内容是正常的程序执行代码,在try语句块中,如果语句抛出了异常,那么try块后面的代码将不再执行,将直接进入catch异常处理代码块。

应用try…catch…语句增强程序的健壮性,是非常好的编码习惯,当预判程序可能会出现不可控的异常错误时,应使用try…catch…语句。通过catch语句的Exception类,可以获取程序异常错误信息。try…catch…语句在后面的学习单元会详细介绍。

程序执行结果如下图所示:

image.png


从输出结果可以看出,程序出现了异常,导致产生异常的原因是“by zero”被零除。

System类的成员方法

System类提供了多种方法针对系统进行不同的操作。例如:exit()方法可以退出当前运行的程序,currentTimeMillis()可以获取当前系统时间,getProperty可以获取当前系统信息。

案例2:利用System. exit()退出当前运行的程序,在PbaseUnit8项目unit包下创建SystemExitSample类。代码如下:

/** 
* @Title: SystemExitSample.java 
* @Package unit 
* @Description: Java基础知识课程案例 
* @author 编程训练营 
* @version V1.0 
*/ 
 
package unit;
 
// 导入java.util.Scanner类
import java.util.Scanner;
 
/** 
* @ClassName: SystemExitSample 
* @Description: Java API库的使用(System类的使用)案例2
* @author 编程训练营 
* 
*/
 
public class SystemExitSample {
 
    public static  String  message="退出程序请输入quit";
 
    /**
     * @Title: main
     * @Description: Java程序入口main方法
     * @param @param args 参数
     *
     * @return void 返回类型 @throws
     */
 
    public static void main(String[] args) {
       System.out.println(message);
       Scanner sc = new Scanner(System.in);
       while (true) {
           System.out.println("请输入退出命令:");
           String tempValue = sc.next();
           if (tempValue.equals("quit")) {
              System.exit(0);
           }
       }
    }
 
}

代码结构分析:

“import java.util.Scanner;”语句用于导入java.util类库中的Scanner类,import是java语言的关键字,应用该关键字可以导入Java核心类库及外部类文件。程序导入java.util.Scanner主要是使用Scanner类从命令行窗口获取输入的命令。

程序在“SystemExitSample”类体内声明了类属性message,被赋值“退出程序请输入quit”,用于程序开始运行时,显示提示信息,提醒用户输入“quit”命令,可以退出程序。

在“main()”方法体内,首先调用System.out输出已定义的字符串变量,然后声明“Scanner”类型的sc变量,应用new运算符(后面的课程内容会详细讲述)实例化Scanner类,并赋值给sc。最后,利用while循环语句(流程控制学习单元会详细讲述),等待用户输入退出命令,获取用户输入后,判断输入的是否是“quit”命令,如果是则调用System.exit()方法退出程序。需要注意的是,exit()方法要求传入一个参数,传入的参数为0表示正常退出。

程序执行结果如下图所示:

image.png


从上图运行情况可以看出,输入错误的命令后,程序并没有退出,而是继续提示用户“请输入退出命令”,输入正确的退出命令后,程序退出运行。

案例3:利用getProperty()方法显示当前系统信息,在PbaseUnit8项目unit包下创建SystemPropertySample类。代码如下:

/** 
* @Title: SystemPropertySample.java 
* @Package unit 
* @Description: Java基础知识课程案例   
* @author 编程训练营 
* @version V1.0 
*/ 
 
package unit;
 
/** 
* @ClassName: SystemPropertySample 
* @Description: Java API库的使用(System类的使用)案例3 
* @author 编程训练营 
* 
*/
 
public class SystemPropertySample {
 
    /** 
    * @Title: main 
    * @Description:Java程序入口main方法 
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
        
       String operationSystem = System.getProperty("os.name");  
        System.out.println("操作系统名称:" + operationSystem);    
 
    }
 
}

代码结构分析:

程序主要完成获取操作系统名称并输出到屏幕上的任务。

语句“String operationSystem = System.getProperty("os.name");”也是程序编码常用的方式,语句等号左边是变量声明部分,语句等号右边是赋值部分,赋值部分可以是表达式、也可以是单个的数值、字符串等、也可以是调用方法返回的数值或字符串等数据。需要注意的是赋值语句两边的数据类型要保持一致。getProperty方法要求传入一个字符串参数,根据传入的参数,getProperty返回不同的系统信息,传入“os.name”字符串,可以获取当前操作系统的名称。

程序执行结果如下图所示:

image.png


从上图运行情况可以看出,程序运行后,获取了正确的操作系统名称。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论