3. Java基础语法
示例
一个Java程序可以认为是一系列对象的集合,这些对象通过调用彼此的方法来协同工作,下面介绍下类、对象、方法和示例变量的概念。
- 对象:对象是类的实例,有状态和行为。
- 类:类是模板,描述与一类对象的行为和状态。
- 方法:方法是行为,一个类可以有多个方法。
- 实例变量:每个对象都有独特的实例变量,这些对象的状态由实例变量的值决定。
public class HelloWorld {
/* 第一个Java程序
* 它将输出字符串 Hello World
*/
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}

对于上面这样一个简单的java程序,需要先通过javac编译,然后使用java执行编译后的程序,如果遇到编码问题,我们还可以使用-encoding选项指定编译:
javac -encoding UTF-8 HelloWorld.java
java HelloWorld
基本语法
- java是大小写敏感的
- 对于java中的所有类来说,类名的首字母应该是大写的,如果类名由若干个单词组成,每个单词的首字母应该大写
- 所有的方法都应该是以小写字母开头的,如果方法含有若干单词,后面的每个单词首字母大写
- 源文件名和类名必须相同,保存文件时使用类名作为文件名保存,文件名的后缀为.java
- 所有java程序由public static void main(String[] args) 方法开始执行。
Java标识符
Java中所有的组成部分都需要名字。类名、变量名和方法名都被称之为标识符。
注意:
- 所有的标识符都应该以字母、美元符$、或者下划线_开始
- 首字符之后可以是字母、数字、美元符和下划线的任意组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
Java修饰符
java中可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符:default, public , protected, private
- 非访问控制修饰符:final, abstract, static, synchronized
Java变量
Java中主要有如下几种类型的变量:
- 局部变量
- 类变量(静态变量)
- 成员变量(非静态变量)
Java数组
数组是存储在堆上的对象,可以保存多个同类型的变量。
Java枚举
Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
Java关键字
| 类别 | 关键字 | 说明 |
|---|---|---|
| 访问控制 | private | 私有的 |
| protected | 受保护的 | |
| public | 公共的 | |
| default | 默认 | |
| 类、方法和变量修饰符 | abstract | 声明抽象 |
| class | 类 | |
| extends | 扩充,继承 | |
| final | 最终值,不可改变的 | |
| implements | 实现(接口) | |
| interface | 接口 | |
| native | 本地,原生方法(非 Java 实现) | |
| new | 新,创建 | |
| static | 静态 | |
| strictfp | 严格,精准 | |
| synchronized | 线程,同步 | |
| transient | 短暂 | |
| volatile | 易失 | |
| 程序控制语句 | break | 跳出循环 |
| case | 定义一个值以供 switch 选择 | |
| continue | 继续 | |
| do | 运行 | |
| else | 否则 | |
| for | 循环 | |
| if | 如果 | |
| instanceof | 实例 | |
| return | 返回 | |
| switch | 根据值选择执行 | |
| while | 循环 | |
| 错误处理 | assert | 断言表达式是否为真 |
| catch | 捕捉异常 | |
| finally | 有没有异常都执行 | |
| throw | 抛出一个异常对象 | |
| throws | 声明一个异常可能被抛出 | |
| try | 捕获异常 | |
| 包相关 | import | 引入 |
| package | 包 | |
| 基本类型 | boolean | 布尔型 |
| byte | 字节型 | |
| char | 字符型 | |
| double | 双精度浮点 | |
| float | 单精度浮点 | |
| int | 整型 | |
| long | 长整型 | |
| short | 短整型 | |
| 变量引用 | super | 父类,超类 |
| this | 本类 | |
| void | 无返回值 | |
| 保留关键字 | goto | 是关键字,但不能使用 |
| const | 是关键字,但不能使用 |
**注意:**Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。
Java注释
类似于 C/C++、Java 也支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。
Java 空行
空白行或者有注释的行,Java 编译器都会忽略掉。
继承
在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(sub class)。
接口
在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
Java中的接口是一种特殊的抽象类,它只包含抽象方法和常量字段的定义,没有实例变量和实现方法。接口可以被其他类实现(implement)或者继承(extend),实现接口的类必须覆盖接口中所有的抽象方法,并且可以提供自己的实现逻辑。这允许类间的松耦合,提高代码的可维护性和扩展性。同时,接口也可以用于多重继承,即一个类可以实现多个接口。
接口的定义格式如下:
[public] interface 接口名称 [extends 接口列表] {
// 常量字段声明
// 抽象方法定义
}
其中,public表示该接口对所有类可见,省略public则表示该接口仅对同包中的类可见;extends后面跟着接口列表,表示该接口继承自其他接口。
Java 源程序与编译型运行区别
