Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
系统类在java中表示什么?_Java - Fatal编程技术网

系统类在java中表示什么?

系统类在java中表示什么?,java,Java,我不知道System类在java中代表什么。System的含义是什么,它像一个控制台,还是以某种方式连接到控制台???java.lang.System类实际上并不代表任何东西。它是一个由一组static方法和三个static字段组成的类。基本上,它是一个用于与主机系统交互的方法的“实用类”。值得浏览以更好地了解系统中的内容 静态字段包含对应用程序的“标准输入”、“标准输出”和“标准错误”流的引用。它们可以连接到控制台,也可以连接到字符数据的其他源/接收器。例如,如果您运行如下java应用程序:

我不知道System类在java中代表什么。System的含义是什么,它像一个控制台,还是以某种方式连接到控制台???

java.lang.System类实际上并不代表任何东西。它是一个由一组
static
方法和三个
static
字段组成的类。基本上,它是一个用于与主机系统交互的方法的“实用类”。值得浏览以更好地了解
系统中的内容

静态字段包含对应用程序的“标准输入”、“标准输出”和“标准错误”流的引用。它们可以连接到控制台,也可以连接到字符数据的其他源/接收器。例如,如果您运行如下java应用程序:

  java com.example.MyApp < input.txt
java com.example.MyApp
然后标准输入流(在
系统中中)将从“input.txt”文件而不是控制台中读取


从OO设计的角度来看,这是一个糟糕的例子:IMO,一个错误。然而,这个类有着很长的历史,它被嵌入到了常见的用法中,因此纠正这个设计错误是不可能的。事实上,即使在Java1.1中也不可能纠正错误。。。因为修复程序会在很大程度上破坏向后兼容性。

请遵循此处的指导原则,以便我们能够理解您的问题。它确实代表了一些东西:JVM本身。JVM有一个可以查询但不能更改的系统时钟,它有可用内存等等。为什么“从OO的角度来看”是一个错误(a)某个类的单个实例(实例是类对象)代表单个JVM和它所处的状态(b)比如,不公开setter方法来处理那些本来就不应该改变的东西?对不起,javadoc不同意这一点。另外,如果
System
表示系统,那么大多数方法都是实例方法,并且是单例类。事实上,在某些情况下,如果它不是一个单例,它将是有用的。如果有针对in/out/err流的常规getter和setter,而不是当前可以更改“final”变量的奇数设计,那就更好了。还有臭名昭著的
arraycopy
方法。@StephenC有趣的是,运行时是一个单例,而系统是一个实用类。System.gc()调用Runtime.getInstance().gc(),System.exit(n)调用Runtime.getRuntime().exit(n);是的,很有趣。而且前后矛盾。并且(IMO)支持我的断言,
系统
就是设计拙劣的一个例子。我的猜测是,它比Java1.0(!)旧得多。这可能是一个已知的问题,但它太难修复。(这可能会对JVM引导等产生影响。)
运行时
类存在于1.0中,因此我的理论是,它最初的目的是作为系统的替代品,但它们在“抢购市场”中用光了时间。