(一)Java 基础语法
目录
一. 前言
? ?在学习 Java 之前,有必要对 Java 有一个基本的认识和了解,可以参见《探秘 JAVA 诞生之路,引领编程人生的宏伟著作》,此文会对 Java 从诞生到发展到成熟有一个非常细致地介绍。接下来在进行编程之前,需要准备下开发环境的搭建,可以参见《JDK 环境变量设置》,配置好环境变量后,选择你中意的开发工具如 eclipse、idea 就可以进入愉快地编程世界了。
? ? 一个 Java 程序可以认为是一系列对象的集合,万事万物皆对象,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念:
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
二. Hello World
? ? 我们开始写自己的第一个 Java 程序,下面看一个简单的 Java 示例代码,它将打印字符串 Hello World:
public class MyFirstJava {
/*
* 第一个Java程序,它将打印字符串 Hello World
*/
public static void main(String []args) {
System.out.println("Hello World"); // 打印 Hello World
}
}
下面将逐步介绍如何保存、编译以及运行这个程序:
1. 打开 Notepad,把上面的代码添加进去;
2. 把文件名保存为:MyFirstJava.java;
3. 打开 cmd 命令窗口,进入目标文件所在的位置,假设是 C:\
4. 在命令行窗口键入?javac MyFirstJava.java ?按下回车键编译代码。如果代码没有错误,cmd 命令提示符会进入下一行。(假设环境变量都设置好了)。
5. 再键入 java MyFirstJava 按下回车键就可以运行程序了。
你将会在窗口看到 Hello World:
C:\> javac MyFirstJava.java
C:\> java MyFirstJava
Hello World
三. Java 语法
3.1. 基本语法
编写 Java 程序时,应注意以下几点:
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的 Java 程序由 ?public static void main(String[] args)? 方法开始执行。
3.2.?Java 标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始;
- 首字符之后可以是字母(A-Z 或者 a-z)、美元符($)、下划线(_)或数字的任何字符组合;
- 关键字不能用作标识符;
- 标识符是大小写敏感的;
- 合法标识符举例:age、$salary、_value、__1_value;
- 非法标识符举例:123abc、-salary。
3.3.?Java 修饰符
像其他语言一样,Java 可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 : default、public、protected、private;
- 非访问控制修饰符 : final、abstract、static、synchronized 和 volatile。
在后面的章节中我们会深入讨论 Java 修饰符。
3.4.?Java 变量
Java 中主要有如下几种类型的变量:
- 局部变量:块或方法中的变量;
- 类变量(静态变量):用 static 修饰的变量;
- 成员变量(非静态变量):类中没有用 static 修饰的变量。
3.5.?Java 数组
数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。
public void test() {
String[] array = new String[2];
array[0] = "你好";
array[1] = "流华追梦";
}
3.6.?Java 枚举
Java 5.0 引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。
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;
}
}
注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。
3.7.?Java 关键字
下表列出了 Java 保留字。这些保留字不能用于常量、变量和任何标识符的名称。
关键字 | 类型 | 描述 |
---|---|---|
abstract | 类、方法和变量修饰符 | 抽象方法,抽象类的修饰符 |
assert | 断言 | 断言条件是否满足 |
boolean | 基本类型 | 布尔数据类型 |
break | 程序控制 | 跳出循环或者label代码段 |
byte | 基本类型 | 8-bit 有符号数据类型 |
case | 程序控制 | switch语句的一个条件 |
catch | 错误处理 | 和try搭配捕捉异常信息 |
char | 基本类型 | 16-bit Unicode字符数据类型 |
class | 类、方法和变量修饰符 | 定义类 |
const | 保留关键字 | 未使用 |
continue | 程序控制 | 不执行循环体剩余部分 |
default | 程序控制 | switch语句中的默认分支 |
do | 程序控制 | 循环语句,循环体至少会执行一次 |
double | 基本类型 | 64-bit双精度浮点数 |
else | 程序控制 | if条件不成立时执行的分支 |
enum | 枚举类型 | |
extends | 类、方法和变量修饰符 | 表示一个类是另一个类的子类 |
false | 基本类型 | 假,boolean 变量的两个合法值之一 |
final | 类、方法和变量修饰符 | 表示一个值在初始化之后就不能再改变了 表示方法不能被重写,或者一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。 | |
float | 基本类型 | 32-bit单精度浮点数 |
for | 程序控制 | for循环语句 |
goto | 保留关键字 | 未使用 |
if | 程序控制 | 条件语句 |
implements | 类、方法和变量修饰符 | 表示一个类实现了接口 |
import | 包相关 | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 | |
int | 基本类型 | 32位整型数 |
interface | 类、方法和变量修饰符 | 接口,一种抽象的类型,仅有方法和常量的定义 |
long | 基本类型 | 64位整型数 |
native | 类、方法和变量修饰符 | 表示方法用非java代码实现 |
new | 类、方法和变量修饰符 | 分配新的类实例 |
null | 基本类型 | 空,表示无值,不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量; |
package | 包相关 | 一系列相关类组成一个包 |
private | 访问控制 | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 访问控制 | 表示字段只能通过类或者其子类访问 子类或者在同一个包内的其他类 |
public | 访问控制 | 表示共有属性或者方法 |
return | 程序控制 | 方法返回值 |
short | 基本类型 | 16位数字 |
static | 类、方法和变量修饰符 | 表示在类级别定义,所有实例共享的 |
strictfp | 类、方法和变量修饰符 | 浮点数比较使用严格的规则 |
super | 变量引用 | 表示基类 |
switch | 程序控制 | 选择语句 |
synchronized | 类、方法和变量修饰符 | 表示同一时间只能由一个线程访问的代码块 |
this | 变量引用 | 表示调用当前实例 或者调用另一个构造函数 |
throw | 错误处理 | 抛出异常 |
throws | 错误处理 | 定义方法可能抛出的异常 |
transient | 类、方法和变量修饰符 | 修饰不要序列化的字段 |
true | 基本类型 | 真,boolean 变量的两个合法值中的一个 |
try | 错误处理 | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 变量引用 | 标记方法不返回任何值 |
volatile | 类、方法和变量修饰符 | 标记字段可能会被多个线程同时访问,而不做同步 |
while | 程序控制 | while循环 |
以上就是目前 Java 中 53 个关键字的含义,这么多很难一下子全都记住,大家可以收藏起来,在学习的过程中,用的多了,自然而然就能记住了。
3.8.?Java 注释
类似于 C/C++,Java 也支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。
public class MyFirstJava {
/*
* 这是第一个Java程序
* 它将打印Hello World
* 这是一个多行注释的示例
*/
public static void main(String[] args) {
// 这是单行注释的示例
/* 这个也是单行注释的示例 */
System.out.println("Hello World");
}
}
3.9.?Java 空行
空白行,或者只有注释的行,Java 编译器都会忽略掉。
3.10. Java 继承
? ? 在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。Java 类只能单继承,也就是说只能有一个父类。
? ? 利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为父类或超类(super class),派生类称为子类(subclass)。
public class Animal {
private String type;
private int age;
public void sound() {
System.out.println("Animal make a sound");
}
}
public class Dog extends Animal {
public void sound() {
System.out.println("dog's bark");
}
}
3.11. Java 接口(interface)
? ? 在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。Java 接口可以多继承。
public interface Animal {
void sound();
}
public class Dog implements Animal {
private String type;
private int age;
public void sound() {
System.out.println("dog's bark");
}
}
四. 课后习题
1. 定义一个类,它包含成员变量和方法,并且给成员变量和方法添加注释。
2. 定义一个有继承的类,看看父类和子类之间有什么差别。
3. 定义一个接口,且有多个实现类。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!