当我们谈论Java程序时,它可以被定义为一组通过互相调用各自的方法来进行通信的对象。现在让我们简单了解一下类、对象、方法和实例变量分别意味着什么。
-
对象 —— 对象具有状态和行为。例如,狗有颜色、名字、品种等状态,也有摇尾巴、吠叫、进食等行为。对象是类的一个实例。
-
类 —— 类可以被定义为一个模板或蓝图,它描述了其类型的对象支持的行为/状态。
-
方法 —— 方法基本上是一种行为。一个类可以包含多个方法。方法是编写逻辑、处理数据和执行所有动作的地方。
-
实例变量 —— 每个对象都有其独特的实例变量集。一个对象的状态是由分配给这些实例变量的值创建的。
第一个Java程序
让我们看一下简单的代码,它将打印出 "Hello World"。
示例
public class MyFirstJavaProgram {
public static void main(String []args) {
System.out.println("Hello World");
}
}
让我们看看如何保存文件、编译并运行程序。请按照以下步骤进行:
-
-
将文件保存为
MyFirstJavaProgram.java
。
-
打开命令提示符窗口并转到您保存类文件的目录。假设它在
C:\
。
-
输入
javac MyFirstJavaProgram.java
并按回车键来编译您的代码。如果没有错误,命令提示符将带您进入下一行(假设路径变量已设置)。
-
现在输入
java MyFirstJavaProgram
来运行您的程序。
-
您将看到 "Hello World" 打印在窗口上。
输出
C:\> javac MyFirstJavaProgram.java
C:\> java MyFirstJavaProgram
Hello World
基本语法
关于Java程序,非常重要的一点是要记住以下几点:
-
区分大小写 —— Java区分大小写,这意味着标识符
Hello
和 hello
在Java中有不同的意义。
-
类名 —— 对于所有的类名,首字母应该大写。如果几个单词用来形成类名,则每个内部单词的首字母也应大写。
-
方法名 —— 所有的方法名都应以小写字母开头。如果几个单词用来形成方法名,则每个内部单词的首字母应大写。
-
程序文件名 —— 程序文件的名称应该与类名完全匹配。
-
public static void main(String[] args)
—— Java程序的处理从 main()
方法开始,这是每个Java程序的强制部分。
Java标识符
Java中的所有组件都需要命名。用于类、变量和方法的名称被称为标识符。
在Java中,有几个关于标识符需要注意的点:
-
所有标识符都应以字母(A-Z 或 a-z)、货币符号($)或下划线(_)开始。
-
-
-
合法的标识符示例:age
, $salary
, _value
, __1_value
。 非法的标识符示例:123abc
, -salary
。
Java修饰符
像其他语言一样,可以通过使用修饰符来修改类、方法等。有两种类型的修饰符:
-
访问修饰符 —— 默认、公共 (
public
)、受保护 (protected
)、私有 (private
)
-
非访问修饰符 —— 最终 (
final
)、抽象 (abstract
)、严格浮点 (strictfp
)
我们将在接下来的部分详细介绍修饰符。
Java变量
以下是Java中的变量类型:
Java数组
数组是用来存储相同类型多个变量的对象。然而,数组本身是在堆上的对象。我们将在后面的章节中查看如何声明、构造和初始化数组。
Java枚举
枚举(Enums)是在Java 5.0中引入的。枚举限制变量只能有一个预定义值列表中的值。在这个枚举列表中的值被称为枚举值。
使用枚举可以减少代码中的错误。
例如,如果我们考虑一个鲜榨果汁店的应用程序,就有可能将杯型限制为小、中、大。这就确保了不允许任何人订购除小、中或大以外的任何尺寸。
示例
class FreshJuice {
enum FreshJuiceSize { SMALL, MEDIUM, LARGE };
FreshJuiceSize size;
}
public class FreshJuiceTest {
public static void main(String args[]) {
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice.FreshJuiceSize.MEDIUM;
System.out.println("Size: " + juice.size);
}
}
输出
上述示例将产生以下结果:
Size: MEDIUM
注意 —— 枚举可以作为独立存在或者在类内声明。方法、变量、构造函数也可以在枚举内定义。
Java关键字
以下是Java中的保留字列表。这些保留字不得用作常量、变量或任何其他标识符名称。 下面是Java中保留关键字及其描述的表格:
序号 |
保留关键字 |
描述 |
1 |
abstract |
抽象关键字用来声明抽象类和抽象方法。 |
2 |
assert |
断言关键字用来定义断言,断言用来确保程序中所做的假设正确性。 |
3 |
boolean |
boolean数据类型是Java支持的八种基本数据类型之一,提供创建布尔类型变量的方式,该变量可以接受true或false作为值。 |
4 |
break |
break语句用于终止循环或switch语句中的case分支。 |
5 |
byte |
byte数据类型是Java支持的八种基本数据类型之一,提供创建可以接受字节值的变量的方式。 |
6 |
case |
case关键字是switch语句的一部分,允许对变量与一系列值进行相等性测试。 |
7 |
catch |
catch关键字用于捕获异常,异常是在程序执行期间出现的问题。 |
8 |
char |
char数据类型是Java支持的八种基本数据类型之一,提供创建可以接受字符值的变量的方式。 |
9 |
class |
class关键字用于定义类,Java是一种面向对象的语言。 |
10 |
const |
const关键字虽然在早期版本中保留,但在现代Java中已被废弃,使用final关键字来定义常量。 |
11 |
continue |
continue关键字用于跳过当前循环迭代并继续下一次迭代。 |
12 |
default |
default关键字是switch语句的一部分,当所有case都不匹配时执行default块。 |
13 |
do |
do...while循环保证至少执行一次。 |
14 |
double |
double数据类型是Java支持的八种基本数据类型之一,提供创建可以接受双精度浮点数值的变量的方式。 |
15 |
if |
if语句用于条件判断,可后跟一个可选的else语句。 |
16 |
enum |
enum关键字定义枚举类型,枚举类是所有Java语言枚举类型的通用基类。 |
17 |
extends |
extends关键字用于继承一个类的属性。 |
18 |
final |
final关键字用于定义不可更改的值或方法/类。 |
19 |
finally |
finally关键字用于定义finally块,无论是否发生异常,finally块中的代码总是会被执行。 |
20 |
float |
float数据类型是Java支持的八种基本数据类型之一,提供创建可以接受单精度浮点数值的变量的方式。 |
21 |
for |
for循环是一种重复控制结构,允许你有效地编写一个特定次数的循环。 |
22 |
goto |
goto语句目前不被Java支持,它被保留为未来可能使用的关键词。 |
23 |
implements |
implements关键字用于实现接口。 |
24 |
import |
import关键字用于导入包中的类、接口等。 |
25 |
instanceof |
instanceof关键字是一个运算符,用于检测对象是否是某个类的实例。 |
26 |
int |
int数据类型是Java支持的八种基本数据类型之一,提供创建可以接受整数值的变量的方式。 |
27 |
interface |
接口是Java中的引用类型,类似于类,它是一组抽象方法的集合。 |
28 |
long |
long数据类型是Java支持的八种基本数据类型之一,提供创建可以接受长整数值的变量的方式。 |
29 |
native |
native关键字用于标记一个方法为本地方法,该方法由非Java代码实现。 |
30 |
new |
new关键字用于创建类的新实例。 |
31 |
package |
package关键字用于定义包,包用来组织类、接口等。 |
32 |
private |
private关键字用于限定成员变量或方法的访问级别,使其仅在声明它的类中可见。 |
33 |
protected |
protected关键字用于限定成员变量或方法的访问级别,使其在子类或同一包中的类中可见。 |
34 |
public |
public关键字用于限定成员变量或方法的访问级别,使其在任何地方都可访问。 |
35 |
return |
return关键字用于从方法中返回值。 |
36 |
short |
short数据类型是Java支持的八种基本数据类型之一,提供创建可以接受短整数值的变量的方式。 |
37 |
static |
static关键字用于创建独立于类实例存在的变量或方法。 |
38 |
strictfp |
strictfp关键字用于指定FP(浮点数)运算要遵循严格的规则。 |
39 |
super |
super关键字用于引用父类的对象。 |
40 |
switch |
switch语句允许根据变量值与一系列值进行相等性测试。 |
41 |
synchronized |
synchronized关键字用于控制对共享资源的并发访问。 |
42 |
this |
this关键字用于引用当前对象。 |
43 |
throw |
throw关键字用于抛出异常。 |
44 |
transient |
transient关键字用于标记对象中的某个字段不应该被序列化。 |
45 |
try |
try关键字用于捕获异常,通常与catch一起使用。 |
46 |
void |
void关键字用于表示一个方法不返回任何值。 |
47 |
volatile |
volatile关键字用于标记一个变量的值可能被多个线程改变。 |
48 |
while |
while循环语句在给定条件为真时重复执行目标语句。 |
Java中的注释
Java支持单行注释和多行注释,这一点与C和C++非常相似。编译器会忽略注释内的所有字符。
示例
public class MyFirstJavaProgram {
public static void main(String []args) {
System.out.println("Hello World");
}
}
输出
Hello World
使用空白行
含有仅空格的行,可能带有注释,被称为空白行,Java完全忽略它。
继承
在Java中,类可以从其他类派生出来。基本上,如果你需要创建一个新的类,而已经有了一个包含了你需要的一些代码的类,那么你可以从现有的代码派生出新的类。
这种概念允许你重用现有类中的字段和方法,而不必在新类中重写代码。在这种情况下,现有类称为超类(superclass),派生类称为子类(subclass)。
接口
在Java语言中,接口可以被定义为对象之间如何相互通信的一种契约。在继承的概念中,接口起着至关重要的作用。
接口定义了一个子类(派生类)应该使用的方法。但是,方法的具体实现完全取决于子类。