Hello World
1
2
3
4
5
|
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
|
Java 的一些语法特征:
- 由类声明组成, 这里使用
public class
声明.
- 运行的代码位于名为
main
的方法中,该方法声明为 public static void main(String[] args)
- 使用大括号
{
和 }
来表示代码段的开头和结尾
- 语句必须以分号结尾
运行Java 程序
常见方法
最常见的方法: 通过 Java 编译器javac
, Java 解释器java
, 用这两个程序来运行它

例子
1
2
3
|
$ javac HelloWorld.java
$ java HelloWorld
Hello World!
|
- 通过
javac
指令, 把 .java 文件编译为.class字节码文件
- 通过
java
指令, 把字节码文件运行(这里只需要输入类名, 不需要带.class 的后缀)
变量和循环
代码
1
2
3
4
5
6
7
8
9
|
public class HelloNumbers {
public static void main(String[] args) {
int x = 0;
while (x < 10) {
System.out.print(x + " ");
x = x + 1;
}
}
}
|
- 变量
x
在使用前必须声明, 并且需要被赋予一个变量类型
- 这里 while 语句的写法和 C 一样
- print 语句只是
System.out.print
而不是 System.out.println
。这意味着我们不应该包含换行符(返回)
运行
1
2
3
|
$ javac HelloNumbers.java
$ java HelloNumbers
$ 0 1 2 3 4 5 6 7 8 9
|
静态类型
特性
- Java 最重要的特性之一是所有变量和表达式都有所谓的静态类型
- Java 变量可以包含该类型的值,并且只能包含该类型的值
- 变量的类型永远不会改变
静态类型检查
1
2
3
4
5
6
7
8
9
10
|
public class HelloNumbers {
public static void main(String[] args) {
int x = 0;
while (x < 10) {
System.out.print(x + " ");
x = x + 1;
}
x = "horse";
}
}
|
若编译以上程序, 我们将会看到报错:
1
2
3
4
5
|
$ javac HelloNumbers.java
HelloNumbers.java:9: error: incompatible types: String cannot be converted to int
x = "horse";
^
1 error
|
- 编译器在程序运行前就立即拒绝, 因此运行这个程序根本不会遇到类型错误(因为有错误就根本没法运行)
- 这与 Python 等动态类型语言形成鲜明对比
- 静态程序让程序员知道正在使用什么样的对象
静态类型的优点
- 编译器确保所有类型都兼容,使程序员更容易调试他们的代码
- 由于保证代码没有类型错误,因此编译程序的用户永远不会遇到类型错误
- 例如,Android 应用程序是用 Java 编写的,通常仅作为 .class 文件分发,即以编译格式分发。因此,此类应用程序永远不会因类型错误而崩溃,因为它们已经被编译器检查过。
- 每个变量、参数和函数都有一个声明的类型,使程序员更容易理解和推理代码
在 Java 中定义函数
我们将尝试实现一个比较大小的函数
- 所有 Java 代码都是类的一部分,因此我们必须定义函数,使它们属于某个类
- 属于类的函数通常称为“方法”
1
2
3
4
5
6
7
8
9
10
11
12
|
public class LargerDemo {
public static int larger(int x, int y) {
if (x > y) {
return x;
}
return y;
}
public static void main(String[] args) {
System.out.println(larger(8, 10));
}
}
|
- 我们使用关键字
public static
声明了我们的方法
- 这里虽然代码看起来冗长, 但是当我们开始构建大型程序时, 这将为我们降低错误的可能
代码样式, 注释, Javadoc
良好的代码风格的一些重要特征:
- 一致样式(间距、变量命名、大括号样式等)
- 大小(行不太宽,源文件不太长)
- 描述性命名(变量、函数、类),例如变量或名称为
year
或 getUserName
而不是 x
或 f
的函数
- 避免重复代码:除了一些更改外,几乎不应该有两个几乎相同的重要代码块
- 酌情发表评论。Java 中的行注释使用分隔符。块(又名多行注释)注释使用
/*
和 */