【发布时间】:2014-11-28 21:28:41
【问题描述】:
所以大家都知道,你能写的最短的Java程序是:
public class Program{
public static void main(String []args){
}
}
有人会怀疑这个最短的程序只包含语言关键字、选择的名称(如类名/函数名/参数名)和一些语法(括号等)。
但是当您仔细观察时,突然弹出 String 类。那么这是否意味着 Java 语言没有 String 类就无法生存?或者甚至没有完整的标准库? (我认为 C++ 可以在没有标准库的情况下存在,不是吗?)
我也一直在查看 String 类代码,但找不到运算符 + 和 += 的实现(也许其他可用?)。那么这是如何工作的呢?这是作为编译器中的特例嵌入的吗?哪个甚至会将 String 类更紧密地绑定到 java 语言?
在 Java 语言中是否还有其他类嵌入得如此之深?
【问题讨论】:
-
首先,您对 String 数组的声明是错误的。将其编辑为:public static void main(String[] args)。这就是你如何在java中定义你的程序的入口点。其次,运算符 + 存在于 String 以及 += (这只是一种简短形式,而不是运算符本身)
-
Java 类有方法,它没有定义像 + 这样的操作符。
-
虽然在 args 之前与 [] 一起工作,但在发布之前对其进行了测试,但这不是故意的,而是一个错字:)。我知道运算符存在于“您可以使用它们”中,但不存在于 String 类的代码中。
-
如果没有 String,Java 将无法运行,因为 Object 中有一个
toString()方法。 -
请参阅docs.oracle.com/javase/specs/jls/se7/html/…,了解有关 + 运算符的 Java 7 规范详细信息。
标签: java string compiler-construction standard-library