主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

Java 基础语法

Java 程序本质上是由一系列相互协作的对象构成的集合体,这些对象通过彼此调用方法来实现协同工作。为了更好地理解 Java 的面向对象特性,我们需要明确以下几个核心概念:

  • :作为对象的蓝图或模板,定义了对象的属性和行为。
  • 对象:类的具体实例,具有状态和行为。
  • 方法:定义在类中的行为,用于执行特定功能。
  • 实例变量:每个对象独有的数据成员,用于存储对象的状态。

第一个 Java 程序

下面我们来看一个简单的 Java 程序示例,这个程序会在控制台输出字符串 "Hello World":

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

Java 程序解析


基本语法

在编写 Java 程序时,需要特别注意以下几个关键规范和要求:

1. 大小写敏感性

  • Java 是严格区分大小写的语言
  • 例如:Hellohello会被视为完全不同的标识符

2. 类名命名规范

  • 应采用大驼峰式命名法(Pascal Case)
  • 每个单词首字母大写,不使用下划线
  • 示例:StudentRecordBankAccount

3. 方法命名规范

  • 应采用小驼峰式命名法(Camel Case)
  • 首字母小写,后续单词首字母大写
  • 示例:calculateTotal()getUserName()

4. 源文件命名规则

  • 必须与公共类名完全一致(包括大小写)
  • 文件扩展名必须为.java
  • 例如:MyFirstApp必须保存在MyFirstApp.java文件中

5. 程序入口规范

  • 所有可执行 Java 程序必须包含:
    public static void main(String[] args)
    这是 Java 虚拟机 JVM 开始执行程序的唯一入口点
  • 文件扩展名必须为.java
  • 例如:MyFirstApp必须保存在MyFirstApp.java文件中

Java 标识符

在 Java 编程中,所有的代码组成部分都需要有明确的命名,这些名称统称为标识符(Identifiers)。

✅ 标识符用于标识类、变量、方法、包等各种程序元素,标识符的命名需要遵循以下规则:

  • 首字符必须是(A-Z或者a-z),美元符($)、或者下划线(_)之一
  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age$salary_value、__1_value
  • 非法标识符举例:123abc-salary

Java 修饰符

在 Java 中,修饰符(Modifiers)用于控制类、方法、变量等的访问权限和行为特性。

✅ 修饰符主要分为以下两大类:

访问修饰符(Access Modifiers)用于控制类、方法、变量的访问范围,包括:

  • public:公开访问,任何类均可访问。
  • protected:仅允许同一包内的类及子类访问。
  • private:仅允许当前类内部访问。
  • 默认(无修饰符):仅允许同一包内的类访问(包级私有)。

非访问修饰符(Non-Access Modifiers)用于定义额外的行为特性,包括:

  • static:表示类成员(静态变量或静态方法),属于类而非实例。
  • final:修饰变量(常量)、方法(不可重写)或类(不可继承)。
  • abstract:修饰类(不能实例化)或方法(无实现,需子类重写)。
  • synchronized:用于多线程,确保方法或代码块同一时间仅一个线程执行。
  • transient:修饰变量,使其在序列化时被忽略。
  • volatile:修饰变量,确保多线程环境下的可见性。

Java 变量

✅ Java中有三种主要的变量类型,它们在声明位置、作用域和生命周期上有所不同:

局部变量 (Local Variables)

1. 定义:在方法、构造函数或代码块内部声明的变量。

2. 特点:

  • 只在声明它的方法/代码块中可见
  • 没有默认值,必须初始化后才能使用
  • 存储在栈内存中
  • 生命周期与方法/代码块的执行周期相同
public void myMethod() {
    int localVar = 10;  // 局部变量
    System.out.println(localVar);
}

成员变量/实例变量 (Instance Variables)

1. 定义:在类中但在方法、构造函数和代码块之外声明的变量

2. 特点:

  • 属于类的实例(对象)
  • 每个对象有自己的一份拷贝
  • 有默认值(数值型为0,布尔型为false,对象引用为null)
  • 存储在堆内存中
  • 生命周期与对象相同
public class MyClass {
    int instanceVar;  // 成员变量/实例变量

    public MyClass(int value) {
        this.instanceVar = value;
    }
}

类变量/静态变量 (Class/Static Variables)

1. 定义:使用static关键字声明的成员变量

2. 特点:

  • 属于类而非类的任何特定实例
  • 所有实例共享同一个静态变量
  • 可以通过类名直接访问(无需创建实例)
  • 有默认值(同实例变量)
  • 存储在方法区
  • 生命周期与程序运行周期相同
public class MyClass {
    static int staticVar = 100;  // 类变量/静态变量
}

变量类型关系比较表

特性 局部变量 成员变量 类变量
声明位置 方法/代码块内部 类中方法外 类中方法外,带static
作用域 仅在声明块内 整个类内部 整个类内部
初始化要求 必须初始化 有默认值,可不显式初始化 有默认值,可不显式初始化
存储位置 栈内存 堆内存 方法区
生命周期 方法执行期间 对象存在期间 程序运行期间
访问方式 直接访问 通过对象实例访问 通过类名或对象实例访问
是否线程安全 是(每个线程有自己的栈)

Java 数组

数组是一种重要的数据结构,它是存储在堆内存中的对象,用于存储多个相同数据类型的元素。

// 创建长度为5的整型数组
int[] arr = new int[5];

// 创建后赋值
arr[0] = 10;
arr[1] = 20;

Java 枚举

Java 5.0 引入了枚举(enum)类型,它是一种特殊的类,用于定义一组固定的常量。枚举通过限制变量只能取预先定义好的值,可以显著提高代码的安全性和可读性,从而减少潜在的错误。

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  ;
   }
}

注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。


Java 关键字

下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。

分类 关键字 说明
访问控制 public, protected, private 访问修饰符
类、方法和变量修饰符 class, interface, abstract, final, static, synchronized, volatile, transient, native, strictfp 定义类结构和成员特性
程序控制 if, else, switch, case, default, while, do, for, break, continue, return, instanceof 流程控制语句
异常处理 try, catch, finally, throw, throws 异常处理机制
包相关 package, import 包管理
基本类型 byte, short, int, long, float, double, char, boolean 原始数据类型
其他 void, new, super, this, enum, assert 特殊用途关键字
保留未使用 const, goto 保留关键字(无实际功能)

注意:true/false/null 是字面量不是关键字 | var (Java 10+) 是保留类型名


Java 注释

Java 提供了灵活的注释机制,与 C/C++ 类似,支持两种注释方式。

注释是程序中的非执行文本,编译器会完全忽略注释内容。

✅ 单行注释

使用双斜线 // 表示,从符号开始到行尾的内容都会被编译器忽略,如下:

// 这是单行注释
int x = 10;  // 代码后的注释

✅ 多行注释

使用 /* 和 */ 包裹注释内容,可以跨越多行,如下:

/* 这是多行注释
   可以包含多行内容
   特别适合较长的说明 */

✅ 文档注释

使用 /** 文档注释 */ 包裹注释内容,用于生成 API 文档,如下:

/**
 * 获取用户信息
 * @param userId 用户ID
 * @return 用户对象
 */
public User getUser(int userId) {
    // 方法实现...
}


评论区 0
发表评论
教程介绍
Java 通用高级编程语言,广泛应用在企业级应用开发、移动应用开发、大数据处理等领域。
12 章节
103 阅读
0 评论