Z
ZHANK
编程在线教程Java 教程变量与数据类型
基础入门

变量与数据类型

掌握 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 + "";              // 简便写法