主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
Java

Java 基础

Java 主页
Java 概述
Java 历史
Java 功能
Java 与 C++
Java JVM(Java虚拟机)
Java JDK、JRE 和 JVM
Java Hello World 程序
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 面向对象编程

Java OOP概念
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 数组
Java 数学类

Java 文件处理

Java 文件
Java 创建文件
Java 写入文件
Java 读取文件
Java 删除文件
Java 目录操作
Java I/O流

Java 错误和异常

Java 异常
Java Try Catch
Java try-with-resources
Java 多个 Catch
Java 嵌套 try
Java finally
Java 抛出异常
Java 异常传播
Java 内置异常
Java 自定义异常

Java 多线程

Java 多线程
Java 线程生命周期
Java 创建线程
Java 启动线程
Java 加入线程
Java 命名线程
Java 线程调度
Java 线程池
Java 主线程
Java 线程优先级
Java 守护线程
Java 线程组
Java JVM 关闭

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 映射接口
Java SortedMap 接口
Java 集合(Set)接口
Java SortedSet 接口

Java 数据结构

Java 数据结构
Java 枚举接口

Java 集合算法

Java 迭代器
Java 比较器
Java Comparable 接口

Java 高级

Java 命令行参数
Java Lambda 表达式
Java 发送电子邮件
Java 小应用程序
Java Javadoc
Java 自动装箱和拆箱
Java mismatch() 方法
Java REPL
Java 多版本发布 JAR
Java 私有接口方法
Java 金刚石操作符
Java 多分辨率图像 API
Java 集合的工厂方法
Java 模块系统
Java Nashorn 引擎
Java Optional 类
Java 方法引用
Java 功能接口
Java 默认方法
Java Base64 工具类
Java Switch 表达式
Java Collectors.teeing() 方法
Java 基准测试
Java 文本块
Java 动态CDS
Java ZGC
Java NullPointerException
Java jpackage
Java 密封类
Java 记录
Java 隐藏类
Java instanceof
Java 紧凑数字格式化
Java 垃圾回收
Java JIT 编译器

Java 杂项

Java 递归
Java 正则表达式
Java 序列化
Java 字符串类
Java 进程 API
Java Stream API
Java @Deprecated 注释
Java CompletableFuture API
Java Streams
Java 日期时间 API

基础

Java 主页
Java 概述
Java 历史
Java 功能
Java 与 C++
Java JVM(Java虚拟机)
Java JDK、JRE 和 JVM
Java Hello World 程序
Java 环境设置
Java 基本语法
Java 变量类型
Java 数据类型
Java 类型转换
Java Unicode 系统
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 OOP概念
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 数学类

文件处理

Java 文件
Java 创建文件
Java 写入文件
Java 读取文件
Java 删除文件
Java 目录操作
Java I/O流

错误和异常

Java 异常
Java Try Catch
Java try-with-resources
Java 多个 Catch
Java 嵌套 try
Java finally
Java 抛出异常
Java 异常传播
Java 内置异常
Java 自定义异常

多线程

Java 多线程
Java 线程生命周期
Java 创建线程
Java 启动线程
Java 加入线程
Java 命名线程
Java 线程调度
Java 线程池
Java 主线程
Java 线程优先级
Java 守护线程
Java 线程组
Java JVM 关闭

同步

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 SortedMap 接口
Java 集合(Set)接口
Java SortedSet 接口

数据结构

Java 数据结构
Java 枚举接口

集合算法

Java 迭代器
Java 比较器
Java Comparable 接口

高级

Java 命令行参数
Java Lambda 表达式
Java 发送电子邮件
Java 小应用程序
Java Javadoc
Java 自动装箱和拆箱
Java mismatch() 方法
Java REPL
Java 多版本发布 JAR
Java 私有接口方法
Java 金刚石操作符
Java 多分辨率图像 API
Java 集合的工厂方法
Java 模块系统
Java Nashorn 引擎
Java Optional 类
Java 方法引用
Java 功能接口
Java 默认方法
Java Base64 工具类
Java Switch 表达式
Java Collectors.teeing() 方法
Java 基准测试
Java 文本块
Java 动态CDS
Java ZGC
Java NullPointerException
Java jpackage
Java 密封类
Java 记录
Java 隐藏类
Java instanceof
Java 紧凑数字格式化
Java 垃圾回收
Java JIT 编译器

杂项

Java 递归
Java 正则表达式
Java 序列化
Java 字符串类
Java 进程 API
Java Stream API
Java @Deprecated 注释
Java CompletableFuture API
Java Streams
Java 日期时间 API

Java 基本语法


上一章 下一章

当我们谈论Java程序时,它可以被定义为一组通过互相调用各自的方法来进行通信的对象。现在让我们简单了解一下类、对象、方法和实例变量分别意味着什么。

  • 对象 —— 对象具有状态和行为。例如,狗有颜色、名字、品种等状态,也有摇尾巴、吠叫、进食等行为。对象是类的一个实例。
  • 类 —— 类可以被定义为一个模板或蓝图,它描述了其类型的对象支持的行为/状态。
  • 方法 —— 方法基本上是一种行为。一个类可以包含多个方法。方法是编写逻辑、处理数据和执行所有动作的地方。
  • 实例变量 —— 每个对象都有其独特的实例变量集。一个对象的状态是由分配给这些实例变量的值创建的。

第一个Java程序

让我们看一下简单的代码,它将打印出 "Hello World"。

示例

public class MyFirstJavaProgram {

   /* 这是我的第一个Java程序。
    * 这将输出 'Hello World'
    */


   public static void main(String []args) {
      System.out.println("Hello World"); // 输出 Hello World
   }
}

让我们看看如何保存文件、编译并运行程序。请按照以下步骤进行:

  1. 打开记事本并添加上述代码。
  2. 将文件保存为 MyFirstJavaProgram.java。
  3. 打开命令提示符窗口并转到您保存类文件的目录。假设它在 C:\。
  4. 输入 javac MyFirstJavaProgram.java 并按回车键来编译您的代码。如果没有错误,命令提示符将带您进入下一行(假设路径变量已设置)。
  5. 现在输入 java MyFirstJavaProgram 来运行您的程序。
  6. 您将看到 "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 {

   /* 这是我的第一个Java程序。
    * 这将会输出 'Hello World'
    * 这是一个多行注释的例子。
    */


   public static void main(String []args) {
      // 这是一个单行注释的例子
      /* 这也是单行注释的一个例子。 */
      System.out.println("Hello World");
   }
}

输出

Hello World

使用空白行

含有仅空格的行,可能带有注释,被称为空白行,Java完全忽略它。

继承

在Java中,类可以从其他类派生出来。基本上,如果你需要创建一个新的类,而已经有了一个包含了你需要的一些代码的类,那么你可以从现有的代码派生出新的类。

这种概念允许你重用现有类中的字段和方法,而不必在新类中重写代码。在这种情况下,现有类称为超类(superclass),派生类称为子类(subclass)。

接口

在Java语言中,接口可以被定义为对象之间如何相互通信的一种契约。在继承的概念中,接口起着至关重要的作用。

接口定义了一个子类(派生类)应该使用的方法。但是,方法的具体实现完全取决于子类。

上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图