Java基本语法

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}

上面的程序由一个类声明组成,该声明使用关键字public class声明。

  • Java所有的代码都应该包含在class里面。
  • 真正负责运行的代码,是一个名为main的method,它声明为public static void main(String[] args)
    • public:公共的,大部分方法都是以这个关键字开始的,后面会进一步解释。
    • static:这是一个静态方法,不与任何特定的实例关联,后面会解释。
    • void:它没有返回类型。
    • main:这是方法的名称。
    • String [] args:这是传递给main方法的参数。
  • 使用大括号{ }来表示一段代码的开始和结束。
  • 声明必须以分号结尾

静态分类

Static Typing

程序语言静态与动态的分类,可以参考oracle的说明文件,它解释了动态和静态类型之间的区别, 帮助你理解由程序的错误提示信息。 两个主要区别: 1. 动态类型语言在运行时执行类型检查,而静态类型语言在编译时执行类型检查。这意味如果以静态类型语言(如Java)编写的脚本包含错误,则在编译错误之前将无法编译. 而用动态类型语言编写的脚本可以编译,即使它们包含会阻止脚本正常运行(如果有的话)的错误。 2. 静态类型语言要求你在使用它们之前声明变量的数据类型,而动态类型语言则不需要。 考虑以下两个代码示例:

// Java
int num;
num = 5;
# Python
num = 5

这两段代码都创建一个名为num的变量并赋值为5. 不同之处在于Java需要将num的数据类型明确定义为int。因为Java是静态类型的,因此它期望变量在被赋值之前被声明。

Python是动态类型的,不需要定义类型, Python根据变量的值确定其数据类型。动态类型语言更加灵活,在编写脚本时可以节省时间和空间。但是,这可能会导致运行时出现问题。例如:

# python
number = 5
numbr = (number + 15) / 2  #注意错字

上面的代码本应创建一个值为5的可变数字,然后将其加上15并除以2以得到10. 但是,number 在第二行的开头拼写错误。由于Python不需要声明变量,因此会不由分说直接创建一个名为numbr的新变量,并把本应分配给number的值分配给它。这段代码会很顺利编译,但是如果程序试图用number来做某事,程序员假设它的值是10,那么后续就无法产生期望的结果,而且还很难注意到问题。

Java的compiler其中一个关键作用是进行静态类型检查(static type check)。若前面定义了 int x = 0;, 那么后面若给x赋值其他的类型值x = 'horse';, compiler就会报错. 这样就保证了程序不会出现类型错误.

除了错误检查外, static types 也可以让程序媛/猿知道自己处的是什么对象.

总而言之,静态类型具有以下优点:

  • 编译器确保所有类型都是兼容的,这使得程序员更容易调试他们的代码。
  • 由于代码保证没有类型错误,所以编译后程序的用户将永远不会遇到类型错误。例如,Android应用程序是用Java编写的,通常仅以.class文件的形式分发,即以编译的格式。因此,这样的应用程序不应该由于类型错误而崩溃。
  • 每个变量,参数和函数都有一个声明的类型,使程序员更容易理解和推理代码。