背景

本文是《Java 后端从小白到大神》修仙系列第二篇,正式进入Java后端世界,本篇文章主要聊Java基础。若想详细学习请点击首篇博文,我们开始把。

文章概览

  1. 命名规范
  2. 变量
  3. 数据类型

1. 命名规范

类型 规范 示例
类名 大驼峰,名词 PaymentService
方法名 小驼峰,动词 calculateTotal()
布尔方法 is/has/can 开头 isValid()
常量 全大写+下划线 MAX_RETRY_COUNT

2. 变量

1. 局部变量(Local Variables)

  • 声明位置:在方法、构造器或代码块内部声明。

  • 作用域:从声明处开始到所属代码块结束。

  • 生命周期:方法/代码块执行期间存在。

  • 默认值无默认值,必须显式初始化。

  • 示例

    1
    2
    3
    4
    5
    6
    
    public void calculate() {
        int result = 0; // 局部变量
        for (int i = 0; i < 10; i++) { // i 是局部变量
            result += i;
        }
    }
    

2. 实例变量(Instance Variables)

  • 声明位置:在类中声明,但在任何方法、构造器或代码块之外。

  • 作用域:整个类内部(非静态上下文中)。

  • 生命周期:与对象实例共存亡(对象创建时初始化,垃圾回收时销毁)。

  • 默认值:有默认值(如 int0,对象引用为 null)。

  • 示例

    1
    2
    3
    4
    
    public class Person {
        private String name; // 实例变量
        private int age;     // 实例变量
    }
    

3. 类变量(静态变量,Static Variables)

  • 声明位置:在类中声明,使用 static 修饰。

  • 作用域:整个类(包括静态和非静态上下文)。

  • 生命周期:类加载时初始化,程序结束时销毁。

  • 默认值:与实例变量相同。

  • 示例

    1
    2
    3
    
    public class Counter {
        public static int count = 0; // 类变量
    }
    

4. 参数变量(Parameters)

  • 声明位置:方法或构造器的参数列表中。

  • 作用域:仅限于方法或构造器内部。

  • 生命周期:方法调用期间存在。

  • 默认值:由调用者传入值。

  • 示例

    1
    2
    3
    
    public void printMessage(String message) { // message 是参数变量
        System.out.println(message);
    }
    

5. final 变量

  • 特点:一旦赋值后不可修改(常量),引用类型则为内存地址不变(内部数据可变)。
  • 适用场景
    • 类常量:public static final double PI = 3.14159;
    • 方法参数:void process(final int value) { ... }
    • 局部常量:final int MAX_RETRIES = 3;

6. 枚举变量(Enum)

  • 特点:预定义一组命名常量。

  • 示例

    1
    2
    
    enum Day { MONDAY, TUESDAY, WEDNESDAY }
    Day today = Day.MONDAY;
    

7. 资源变量(Try-with-Resources)

  • 特点:在 try 语句中声明,自动管理资源关闭。

  • 示例

    1
    2
    3
    
    try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
        // 自动关闭资源
    }
    

8. 变量作用域对比表

变量类型 声明位置 作用域 生命周期 默认值
局部变量 方法/代码块内 代码块内部 方法/代码块执行期间
实例变量 类内部(非静态) 类内部(非静态上下文) 与对象实例共存亡
类变量 类内部(静态) 整个类及类实例 类加载到程序结束
参数变量 方法/构造器参数列表 方法/构造器内部 方法调用期间 传入值

9. 关键注意事项

  1. 默认值规则

    • 实例变量类变量有默认值。
    • 局部变量必须显式初始化,否则编译错误。
  2. 变量隐藏(Shadowing)

    • 局部变量或参数变量可能与实例变量同名,此时使用 this 访问实例变量。

      1
      2
      3
      4
      5
      6
      7
      8
      
      public class Example {
          private int value = 10;
      
          public void printValue(int value) {
              System.out.println(value);    // 参数变量
              System.out.println(this.value); // 实例变量
          }
      }
      
  3. 类型转换

    • 基本类型:自动转换(小范围→大范围)或强制转换。

      1
      2
      3
      
      int a = 100;
      long b = a;           // 自动转换
      double c = (double) a; // 强制转换(显式)
      
    • 引用类型:向上转型(安全)、向下转型(需类型检查)。

      1
      2
      
      Object obj = "Hello"; // 向上转型(String → Object)
      String str = (String) obj; // 向下转型(需确保obj是String类型)
      

3. 数据类型

1. 基本数据类型(Primitive Types)

Java 的 8种基本数据类型,直接存储值:

类型 大小(位) 默认值 取值范围/描述
byte 8 0 -128 到 127
short 16 0 -32,768 到 32,767
int 32 0 -2³¹ 到 2³¹-1
long 64 0L -2⁶³ 到 2⁶³-1
float 32 0.0f IEEE 754 单精度浮点数
double 64 0.0d IEEE 754 双精度浮点数
char 16 ‘\u0000’ Unicode 字符(0 到 65,535)
boolean 1(实际) false truefalse
  • 示例
1
2
3
4
int age = 30;
double price = 19.99;
char grade = 'A';
boolean isActive = true;

2. 引用数据类型(Reference Types)

存储对象的引用(内存地址),包括以下类型:

类型 描述 示例
类类型 用户定义的类或Java内置类 String, ArrayList
接口类型 用户定义的接口 List, Runnable
数组类型 基本类型或引用类型的数组 int[], String[][]
枚举类型 使用 enum 定义的枚举 enum Day { MON, TUE }
Lambda表达式 函数式接口的实现 Runnable r = () -> {};
  • 示例
1
2
3
String name = "Alice";
List<Integer> numbers = new ArrayList<>();
int[] scores = {90, 85, 88};

总结

Java基础,需要熟练掌握。