三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Java 变量未初始化报错、局部变量与成员变量区别

Java 变量未初始化报错、局部变量与成员变量区别

前言

初学变量,最容易遇到的报错:局部变量未初始化。 很多新手分不清:为什么有的变量不赋值能用,有的变量不赋值直接报错?

核心原因:局部变量 和 成员变量 初始化规则完全不同。

一、两种变量定义

1. 成员变量(全局变量)

定义在类中、方法外的变量

java

运行

public class Test{ int num; // 成员变量 }

2. 局部变量

定义在方法内部、代码块内部的变量

java

运行

public void test(){ int a; // 局部变量 }

二、初始化规则(必考核心)

1. 成员变量:系统自动默认初始化

不赋值也有默认值,不会报错

  • int → 0
  • double → 0.0
  • boolean → false
  • 引用类型 → null

2. 局部变量:必须手动初始化

系统不会自动赋值,使用前未赋值直接编译报错

报错示例:

java

运行

public static void main(String[] args) { int a; System.out.println(a); // 报错:尚未初始化 }

三、新手高频踩坑场景

  1. if 判断内赋值,外部调用报错

java

运行

int a; if(true){ a = 10; } System.out.println(a); // 部分编译器判定可能未赋值
  1. 循环内赋值,外部使用报错

四、最佳编码规范

  1. 局部变量定义即赋值
  2. 尽量少依赖成员变量默认值
  3. 变量作用域尽量缩小,优先使用局部变量

结语

一句话记住区别:成员变量系统兜底,局部变量必须自己赋值。

← 返回列表