Java 数据类型
在 Java 中,每一个变量都有一个类型,这个类型决定了变量可以存储什么样的数据,以及可以对这些数据执行哪些操作。Java 的数据类型分为两大类:基本数据类型 (Primitive Data Types) 和 引用数据类型 (Reference Data Types)。
1. 基本数据类型 (Primitive Data Types)
基本数据类型是 Java 语言内置的、最基础的数据类型。它们不是对象,直接存储数据值。Java 中共有 8 种基本数据类型。
整数类型
用于表示没有小数部分的数值。
byte:- 大小: 1 字节 (8 位)
- 范围: -128 到 127
- 用途: 在需要节省内存且数值范围不大的情况下使用,例如处理文件流或二进制数据。
short:- 大小: 2 字节 (16 位)
- 范围: -32,768 到 32,767
- 用途: 同样用于节省内存,比
byte范围大。
int:- 大小: 4 字节 (32 位)
- 范围: -2,147,483,648 到 2,147,483,647
- 用途: 最常用的整数类型。默认情况下,您写的任何整数(如
100)都被视为int类型。
long:- 大小: 8 字节 (64 位)
- 范围: 非常大
- 用途: 当
int不足以存储一个很大的整数时使用。注意:long类型的值在末尾需要加上L或l。例如:long bigNumber = 1234567890123L;
浮点类型
用于表示带有小数部分的数值。
float:- 大小: 4 字节 (32 位)
- 精度: 单精度,约 6-7 位十进制有效数字。
- 用途: 用于需要小数但对精度要求不高的场景。注意:
float类型的值在末尾需要加上F或f。例如:float price = 19.99F;
double:- 大小: 8 字节 (64 位)
- 精度: 双精度,约 15 位十进制有效数字。
- 用途: 最常用的浮点类型。提供了更高的精度。默认情况下,您写的任何小数值(如
3.14)都被视为double类型。
字符类型
char:- 大小: 2 字节 (16 位)
- 编码: Unicode 字符。
- 用途: 存储单个字符。值必须用单引号 (
') 括起来。例如:char grade = 'A';,char chineseChar = '中';
布尔类型
boolean:- 大小: JVM 并未明确规定其大小,通常认为是 1 位。
- 值: 只能是
true或false。 - 用途: 用于逻辑判断和条件控制,是所有关系运算的结果。
java
public class DataTypesExample {
public static void main(String[] args) {
// 整数类型
int myAge = 30;
long population = 8000000000L;
// 浮点类型
double pi = 3.1415926535;
float temperature = 36.6F;
// 字符类型
char initial = 'J';
// 布尔类型
boolean isLoggedIn = true;
System.out.println("年龄: " + myAge);
System.out.println("世界人口: " + population);
System.out.println("圆周率: " + pi);
System.out.println("体温: " + temperature);
System.out.println("首字母: " + initial);
System.out.println("登录状态: " + isLoggedIn);
}
}2. 引用数据类型 (Reference Data Types)
与基本数据类型直接存储值不同,引用数据类型存储的是对内存中某个对象的引用(可以理解为内存地址)。
- 变量本身不存储对象,而是存储一个指向该对象的“指针”。
- 所有使用
new关键字创建的类型的变量都是引用类型。 - 如果一个引用变量没有指向任何对象,它的值为
null。
常见的引用数据类型包括:
- 类 (Classes): 所有由
class定义的类型,例如我们之前创建的Dog类,以及 Java 内置的String类。 - 接口 (Interfaces): 由
interface定义的类型。 - 数组 (Arrays): 用于存储同类型元素的集合。
java
// String 是一个非常常用的引用类型
String greeting = "Hello, Java!";
// Dog 是我们自定义的类,myDog 是一个引用变量
Dog myDog = new Dog(); // myDog 存储了新创建的 Dog 对象的地址
// 数组也是引用类型
int[] numbers = new int[5]; // numbers 存储了新创建的数组对象的地址基本类型 vs. 引用类型:关键区别
| 特性 | 基本数据类型 (Primitive) | 引用数据类型 (Reference) |
|---|---|---|
| 存储内容 | 变量直接存储数据值 | 变量存储对象的内存地址(引用) |
| 存储位置 | 栈内存 (Stack) | 对象本身在堆内存 (Heap),引用在栈内存 |
| 默认值 | 数值类型为 0 或 0.0,boolean 为 false,char 为 \u0000 | null |
| 大小 | 固定大小 (e.g., int is 4 bytes) | 大小可变 |
理解这两种数据类型的区别对于掌握 Java 的内存管理和对象操作至关重要。