Java 教程
- Java - 首页
- Java - 概述
- Java - 历史
- Java - 特性
- Java 与 C++
- JVM - Java 虚拟机
- Java - JDK 与 JRE 与 JVM
- Java - HelloWorld 程序
- Java - 环境搭建
- Java - 基本语法
- Java - 变量类型
- Java - 数据类型
- Java - 类型转换
- Java - Unicode 系统
- Java - 基本运算符
- Java - 注释
- Java - 用户输入
- Java - 日期与时间
Java 控制语句
- Java - 循环控制
- Java - 决策制定
- Java - if-else
- Java - switch
- Java - for 循环
- Java - for-each 循环
- Java - while 循环
- Java - do-while 循环
- Java - break
- Java - continue
面向对象编程
- Java - OOPs 概念
- Java - 对象与类
- Java - 类属性
- Java - 类方法
- Java - 方法
- Java - 变量作用域
- Java - 构造器
- Java - 访问修饰符
- Java - 继承
- Java - 聚合
- Java - 多态
- Java - 方法重写
- Java - 方法重载
- Java - 动态绑定
- Java - 静态绑定
- Java - 实例初始化块
- Java - 抽象
- Java - 封装
- Java - 接口
- Java - 包
- Java - 内部类
- Java - 静态类
- Java - 匿名类
- Java - 单例类
- Java - 包装类
- Java - 枚举
- Java - 枚举构造器
- Java - 枚举字符串
Java 内置类
Java 文件处理
Java 错误与异常
- Java - 异常
- Java - try-catch 块
- Java - try-with-resources
- Java - 多重 catch 块
- Java - 嵌套 try 块
- Java - finally 块
- Java - throw 异常
- Java - 异常传播
- Java - 内置异常
- Java - 自定义异常
Java 多线程
- Java - 多线程
- Java - 线程生命周期
- Java - 创建线程
- Java - 启动线程
- Java - 线程连接
- Java - 线程命名
- Java - 线程调度器
- Java - 线程池
- Java - 主线程
- Java - 线程优先级
- Java - 守护线程
- Java - 线程组
- Java - 关闭钩子
Java 同步
Java 网络编程
- Java - 网络编程
- Java - 套接字编程
- Java - URL 处理
- Java - URL 类
- Java - URLConnection 类
- Java - HttpURLConnection 类
- Java - Socket 类
- Java - 泛型
Java 集合
Java 接口
Java 数据结构
Java 集合算法
高级 Java
- Java - 命令行参数
- Java - Lambda 表达式
- Java - 发送邮件
- Java - Applet 基础
- Java - Javadoc 注释
- Java - 自动装箱和拆箱
- Java - 文件不匹配方法
- Java - REPL (JShell)
- Java - 多版本 Jar 文件
- Java - 私有接口方法
- Java - 内部类菱形运算符
- Java - 多分辨率图像 API
- Java - 集合工厂方法
- Java - 模块系统
- Java - Nashorn JavaScript
- Java - Optional 类
- Java - 方法引用
- Java - 函数式接口
- Java - 默认方法
- Java - Base64 编码解码
- Java - switch 表达式
- Java - Teeing Collectors
- Java - 微基准测试
- Java - 文本块
- Java - 动态 CDS 归档
- Java - Z 垃圾收集器 (ZGC)
- Java - 空指针异常
- Java - 打包工具
- Java - 密封类
- Java - 记录类
- Java - 隐藏类
- Java - 模式匹配
- Java - 简洁的数字格式化
- Java - 垃圾回收
- Java - JIT 编译器
Java 其他
- Java - 递归
- Java - 正则表达式
- Java - 序列化
- Java - 字符串
- Java - Process API 增强
- Java - Stream API 增强
- Java - 增强 @Deprecated 注解
- Java - CompletableFuture API 增强
- Java - 流
- Java - 日期时间 API
- Java 8 - 新特性
- Java 9 - 新特性
- Java 10 - 新特性
- Java 11 - 新特性
- Java 12 - 新特性
- Java 13 - 新特性
- Java 14 - 新特性
- Java 15 - 新特性
- Java 16 - 新特性
Java APIs 与框架
Java 类引用
- Java - Scanner
- Java - 数组
- Java - 字符串
- Java - Date
- Java - ArrayList
- Java - Vector
- Java - Stack
- Java - PriorityQueue
- Java - LinkedList
- Java - ArrayDeque
- Java - HashMap
- Java - LinkedHashMap
- Java - WeakHashMap
- Java - EnumMap
- Java - TreeMap
- Java - IdentityHashMap
- Java - HashSet
- Java - EnumSet
- Java - LinkedHashSet
- Java - TreeSet
- Java - BitSet
- Java - Dictionary
- Java - Hashtable
- Java - Properties
- Java - Collection
- Java - Array
Java 有用资源
Java - 基本语法
当我们考虑一个 Java 程序时,它可以被定义为一组通过调用彼此方法进行通信的对象的集合。让我们简要了解一下类、对象、方法和实例变量的含义。
对象 - 对象具有状态和行为。例如:狗具有状态——颜色、名字、品种,以及行为,例如摇尾巴、吠叫、吃东西。对象是类的实例。
类 - 类可以定义为描述其类型对象支持的行为/状态的模板/蓝图。
方法 - 方法基本上是一种行为。一个类可以包含许多方法。在方法中编写逻辑、操作数据和执行所有操作。
实例变量 - 每个对象都具有自己唯一的一组实例变量。对象的状体是由分配给这些实例变量的值创建的。
第一个 Java 程序
让我们来看一个简单的代码,它将打印Hello World。
示例
public class MyFirstJavaProgram { /* This is my first java program. * This will print 'Hello World' as the output */ public static void main(String []args) { System.out.println("Hello World"); // prints Hello World } }
让我们看看如何保存文件、编译和运行程序。请按照以下步骤操作:
打开记事本并添加上面的代码。
将文件保存为:MyFirstJavaProgram.java。
打开命令提示符窗口,并转到保存类的目录。假设是 C:\。
键入“javac MyFirstJavaProgram.java”并按 Enter 键编译代码。如果代码中没有错误,命令提示符将带您进入下一行(假设:已设置 path 变量)。
现在,键入“java MyFirstJavaProgram”运行程序。
您将能够看到窗口上打印的“Hello World”。
输出
C:\> javac MyFirstJavaProgram.java C:\> java MyFirstJavaProgram Hello World
基本语法
关于 Java 程序,务必记住以下几点。
大小写敏感性 - Java 区分大小写,这意味着标识符Hello和hello在 Java 中具有不同的含义。
类名 - 所有类名的第一个字母都应大写。如果使用多个单词来构成类名,则每个内部单词的第一个字母都应大写。
示例 - class MyFirstJavaClass
方法名 - 所有方法名都应以小写字母开头。如果使用多个单词来构成方法名,则每个内部单词的第一个字母都应大写。
示例 - public void myMethodName()
程序文件名 - 程序文件名应与类名完全匹配。
保存文件时,应使用类名保存它(记住 Java 区分大小写),并在名称末尾附加“.java”(如果文件名和类名不匹配,则程序将无法编译)。
但是请注意,如果您在文件中没有公共类,则文件名可以与类名不同。在文件中也不强制要求有公共类。
示例 - 假设“MyFirstJavaProgram”是类名。然后应将文件保存为“MyFirstJavaProgram.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 修饰符
与其他语言一样,可以使用修饰符来修改类、方法等。修饰符分为两类:
访问修饰符 − default、public、protected、private
非访问修饰符 − final、abstract、strictfp
我们将在下一节中更详细地介绍修饰符。
Java 变量
以下是Java 中变量的类型:
- 局部变量
- 类变量(静态变量)
- 实例变量(非静态变量)
Java 数组
数组是存储多个相同类型变量的对象。但是,数组本身是堆上的一个对象。我们将在接下来的章节中学习如何声明、构造和初始化。
Java 枚举
枚举在 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 中的保留字。这些保留字不能用作常量或变量或任何其他标识符名称。
序号 | 保留字及描述 |
---|---|
1 | abstract
根据字典,抽象是指处理思想而不是事件的特性。 |
2 | assert
assert 关键字用于在 Java 中定义断言。断言是 Java 中的一个语句,它确保程序中所做的任何假设的正确性。 |
3 | boolean
boolean 数据类型是 Java 支持的八种基本数据类型之一。它提供了一种创建 boolean 类型变量的方法,这些变量可以接受 true 或 false 的 boolean 值。 |
4 | break
Java 编程语言中的break语句有以下两种用法:
|
5 | byte
byte 数据类型是 Java 支持的八种基本数据类型之一。它提供了一种创建 byte 类型变量的方法,这些变量可以接受 byte 值。 |
6 | case
case关键字是switch语句的一部分,它允许测试变量与值的列表是否相等。 |
7 | catch
异常(或异常事件)是在程序执行期间出现的错误。 |
8 | char
char 数据类型是 Java 支持的八种基本数据类型之一。 |
9 | class
Java 是一种面向对象的语言。作为一种具有面向对象特性的语言。 |
10 | const
final关键字用于在 Java 中定义常量值或 final 方法/类。 |
11 | continue
continue关键字可用于任何循环控制结构。 |
12 | default
default关键字是switch语句的一部分,它允许测试变量与值的列表是否相等。 |
13 | do
do...while循环类似于while循环,不同之处在于do...while循环至少执行一次。 |
14 | double
double 数据类型是 Java 支持的八种基本数据类型之一。 |
15 | if
if语句后面可以跟一个可选的else语句,当布尔表达式为false时执行。 |
16 | enum
Java Enum类是所有 Java 语言枚举类型的公共基类。 |
17 | extends
extends是用于继承类属性的关键字。以下是extends关键字的语法。 |
18 | final
final关键字用于在 Java 中定义常量值或 final 方法/类。 |
19 | finally
finally关键字用于定义finally块。finally块位于try块或catch块之后。无论是否发生异常,finally块中的代码都会始终执行。 |
20 | float
float 数据类型是 Java 支持的八种基本数据类型之一。它提供了一种创建 float 类型变量的方法,这些变量可以接受 float 值。 |
21 | for
for循环是一种重复控制结构,允许您有效地编写需要执行特定次数的循环。 |
22 | goto
Java目前不支持goto语句。它作为保留关键字以备将来使用。作为替代方案,Java 支持带有 break 和 continue 语句的标签。 |
23 | if
if语句由一个布尔表达式和一个或多个语句组成。 |
24 | implements
通常,implements关键字与类一起使用以继承接口的属性。 |
25 | import
import关键字用于包的上下文中。 |
26 | instanceof
instanceof关键字是一个运算符,仅用于对象引用变量。 |
27 | int
int 数据类型是 Java 支持的八种基本数据类型之一。 |
28 | interface
接口是 Java 中的一种引用类型。它类似于类。它是抽象方法的集合。 |
29 | long
long 数据类型是 Java 支持的八种基本数据类型之一。 |
30 | native |
31 | new |
32 | package
在 Java 中使用包是为了防止命名冲突,控制访问,使查找/定位和使用类、接口、枚举和注释更容易等。 |
33 | private
声明为 private 的方法、变量和构造函数只能在其声明的类中访问。 |
34 | protected
protected 访问修饰符不能应用于类和接口。 |
35 | public
声明为 public 的类、方法、构造函数、接口等可以从任何其他类访问。 |
36 | return |
37 | short
通过为变量分配不同的数据类型,可以在这些变量中存储整数、小数或字符。 |
38 | static
static关键字用于创建独立于为类创建的任何实例而存在的变量。 |
39 | strictfp |
40 | super
super关键字类似于this关键字。 |
41 | switch
switch语句允许测试变量与值的列表是否相等。 |
42 | synchronized |
43 | this
this关键字是一个非常重要的关键字,用于标识对象。以下是此关键字的用法。 |
44 | throw
如果方法不处理已检查异常,则该方法必须使用throws关键字声明它。 |
45 | transient
序列化是一个概念,我们可以使用它将对象的状太写入字节流中,以便我们可以通过网络传输它(使用JPA和RMI等技术)。 |
46 | try
方法使用try和catch关键字的组合来捕获异常。 |
47 | void |
48 | volatile |
49 | while
Java编程语言中的while循环语句重复执行目标语句,只要给定的条件为true。 |
Java中的注释
Java支持单行和多行注释,与C和C++非常相似。Java编译器会忽略任何注释中所有可用的字符。
示例
public class MyFirstJavaProgram { /* This is my first java program. * This will print 'Hello World' as the output * This is an example of multi-line comments. */ public static void main(String []args) { // This is an example of single line comment /* This is also an example of single line comment. */ System.out.println("Hello World"); } }
输出
Hello World
使用空行
仅包含空白字符(可能带有注释)的行称为空行,Java完全忽略它。
继承
在Java中,类可以从类派生。基本上,如果您需要创建一个新类,并且这里已经有一个类包含您需要的一些代码,那么可以从已经存在的代码派生您的新类。
Java继承允许您重用现有类的字段和方法,而无需在新类中重写代码。在这种情况下,现有类称为超类,派生类称为子类。
接口
在Java语言中,接口可以定义为对象之间如何相互通信的契约。在继承的概念中,接口起着至关重要的作用。
接口定义了派生类(子类)应该使用的方法。但是方法的实现完全取决于子类。
接下来是什么?
下一节解释Java编程中的对象和类。在本节结束时,您将能够清楚地了解Java中的对象和类是什么。