Java变量和数据类型的基本语法

Java基本数据类型共8种,分整型、浮点型、字符型、布尔型四类,声明格式为“类型 变量名;”或“类型 变量名 = 初始值;”,变量须先声明后使用,且遵循命名规则与作用域约束。

Java中基本数据类型和变量声明怎么写

Java变量必须先声明后使用,基本数据类型共8种,分四类:整型(byteshortintlong)、浮点型(floatdouble)、字符型(char)、布尔型(boolean)。它们是值类型,直接存数据,不涉及对象引用。

声明语法统一为:类型 变量名;类型 变量名 = 初始值;

int age = 25;
double price = 19.99;
char grade = 'A';
boolean isActive = true;
  • int 最常用,范围 -2³¹ ~ 2³¹−1;long 需加后缀 L(如 10000000000L),否则可能溢出报错
  • float 必须显式加 Ff(如 3.14f),否则默认是 double,赋值会编译失败
  • char 用单引号,只能放一个 Unicode 字符(如 '\u03B1''中'),不能写空字符串 ""
  • boolean 只能是 truefalse,不可用 0/1null 替代

变量命名规则和常见错误

变量名必须以字母、$_ 开头,后续可跟字母、数字、$_;严格区分大小写;不能是 Java 关键字(如 classifreturn)。

  • 合法: userName_count$value
  • 非法: 2ndPlace(开头数字)、my-name(含减号)、int(关键字)、user name(含空格)
  • 编译错误示例:error: not a statement 通常因变量名含非法字符或漏写分号
  • IDE 常提示 Cannot resolve symbol,大概率是拼写错误或作用域问题(比如在 if 块内声明却在外部访问)

局部变量 vs 成员变量的区别在哪

局部变量定义在方法、构造器或语句块内,必须显式初始化才能使用;成员变量(字段)属于类,有默认初始值,且受访问修饰符控制。

public class Example {
    int count;           // 成员变量:默认为 0
    String name;         // 成员变量:默认为 null
    void method() {
        int x;            // 局部变量:未初始化,直接使用会编译报错
        // System.out.println(x); // error: variable x might not have been initialized
        x = 10;
        System.out.println(x); // OK
    }
}
  • 成员变量自动初始化:int/long0booleanfalsechar'\u0000',引用类型→null
  • 局部变量不自动初始化,哪怕在 for 循环里声明也一样——JVM 要求所有路径都明确赋值才允许读取
  • 同名时,局部变量会遮蔽(shadow)成员变量,需用 this.name 显式访问成员变量

为什么 int 和 Integer 不能混用?

int 是基本类型,Integer 是其包装类(引用类型),二者内存模型和行为完全不同。自动装箱/拆箱只在特定上下文生效,容易引发空指针或比较陷阱。

  • 直接比较 ==:两个 Integer 在 -128~127 范围内可能

    相等(缓存复用),超出则不等;而 int == Integer 总是按值比较
  • Integer a = null; 后执行 int b = a; 会抛 NullPointerException(自动拆箱失败)
  • 泛型、集合(如 ArrayList)、反射、方法重载等场景强制要求引用类型,此时不能传 int
  • 性能敏感代码(如循环内大量计算)应优先用 int,避免无谓装箱开销

基本类型和包装类的边界模糊处最容易出 runtime 错误,尤其在从 JSON 解析、数据库映射或旧代码迁移时,null 值是否被允许必须提前确认。