变量与数据类型
掌握 8 种基本类型、引用类型、var 关键字、类型转换
变量与数据类型
Java 是强类型语言:每个变量必须先声明类型,类型一旦确定就不能改变。 这是 Java 安全性的基础——编译器在代码运行前就能发现类型错误。
学完本章你将: 掌握 8 种基本类型、引用类型、var 推断、类型转换。
8 种基本类型
基本类型直接存值,存在栈内存中,不是对象。
java
// 整数 —— 范围越小越省内存,int 最常用
byte b = 127; // 1 字节,-128 ~ 127
short s = 32767; // 2 字节
int i = 2147483647; // 4 字节 ← 默认选择
long l = 922337203L; // 8 字节,必须加 L 后缀!
// 浮点 —— double 默认,float 需要 f 后缀
float f = 3.14f; // 4 字节
double d = 3.14159; // 8 字节 ← 默认选择
// 字符与布尔
char c = 'A'; // 2 字节,存 Unicode 字符
boolean flag = true; // 只有 true/false,不同于 C 语言的 0/1
⚠️ 常见错误:
float f = 3.14;会编译错误!因为3.14默认是 double,不能自动转 float。必须写3.14f。同理long l = 10000000000;也要加L。
var 类型推断
Java 10 引入 var,编译器自动根据初始值推断类型。注意:只是语法糖,Java 仍是强类型。
java
var name = "Alice"; // 推断为 String
var list = new ArrayList<String>(); // 推断为 ArrayList<String>
// var x; // ❌ 必须初始化,否则不知道类型
引用类型 vs 基本类型
java
// 基本类型:存值本身
int a = 10;
int b = a; // b 拷贝了 a 的值
// 引用类型:存对象的"地址"
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; // arr2 指向同一个数组对象
arr2[0] = 99;
System.out.println(arr1[0]); // 99!arr1 也变了
类型转换
java
// 自动转换:小范围 → 大范围(安全)
int i = 100;
long l = i; // int → long ✅
double d = i; // int → double ✅
// 强制转换:大范围 → 小范围(可能丢数据)
double pi = 3.14;
int n = (int) pi; // n = 3,小数被截断
// String ↔ 基本类型
int num = Integer.parseInt("42");
String s = String.valueOf(100);
String s1 = "hello"; String s2 = new String("hello");
// 数组 int[] scores = {90, 85, 92}; String[] names = new String[3];
// null —— 引用类型默认值 String str = null; // 空引用
---
## 类型转换
```java
// 自动转换(小 → 大)
int i = 100;
long l = i; // ✅ int → long
double d = i; // ✅ int → double
// 强制转换(大 → 小,可能丢失精度)
double pi = 3.14;
int n = (int) pi; // n = 3(截断小数)
// 字符串互转
int num = Integer.parseInt("42"); // String → int
String s = String.valueOf(100); // int → String
String s2 = 100 + ""; // 简便写法