掌握 Java 数据类型和变量的使用
变量就像你家里的收纳箱:
每个箱子贴一个标签(变量名),标明里面放什么
箱子有不同尺寸(数据类型):小箱子放硬币(byte),大箱子放衣服(long)
int age = 25; → 贴了“age”标签的中号箱子,里面放了数字 25
💡 数据类型决定箱子大小,变量名是箱子标签,值是箱子里的东西。
public class MyClass { // 类定义
public static void main(String[] args) { // 主方法
// 程序代码
System.out.println("Hello");
}
}// 单行注释
/*
* 多行注释
* 可以跨越多行
*/
/**
* 文档注释
* 用于生成 API 文档
* @param args 参数说明
*/✅ 合法命名
myName, _count, $price
userName, MAX_VALUE
firstName, getAge
❌ 非法命名
2name(数字开头)
my-name(含连字符)
class(关键字)
| 类型 | 规范 | 示例 |
|---|---|---|
| 类名 | 大驼峰命名法 | MyClass, StudentInfo |
| 方法名/变量名 | 小驼峰命名法 | myName, getAge |
| 常量名 | 全大写+下划线 | MAX_VALUE, PI |
| 包名 | 全小写 | com.example.demo |
Java 是强类型语言,所有变量必须先声明类型才能使用。
🔢
byte
1字节 整数
🔢
short
2字节 整数
🔢
int
4字节 整数
🔢
long
8字节 整数
🔵
float
4字节 浮点
🔵
double
8字节 浮点
📝
char
2字节 字符
✅
boolean
1位 布尔值
| 类型 | 大小 | 范围 | 默认值 | 示例 |
|---|---|---|---|---|
| byte | 1字节 | -128 ~ 127 | 0 | byte b = 100; |
| short | 2字节 | -32768 ~ 32767 | 0 | short s = 1000; |
| int | 4字节 | -2^31 ~ 2^31-1 | 0 | int i = 100000; |
| long | 8字节 | -2^63 ~ 2^63-1 | 0L | long l = 100000L; |
| float | 4字节 | 单精度浮点数 | 0.0f | float f = 3.14f; |
| double | 8字节 | 双精度浮点数 | 0.0d | double d = 3.14; |
| char | 2字节 | Unicode 字符 | '\u0000' | char c = 'A'; |
| boolean | 1位 | true 或 false | false | boolean b = true; |
// 整数:一般使用 int,大数字用 long
int age = 25; // 年龄
long worldPopulation = 7800000000L; // 世界人口
// 浮点数:一般使用 double
double price = 99.99; // 价格
double pi = 3.14159265359; // 精确计算
// 字符:使用 char
char grade = 'A'; // 等级
char chinese = '中'; // 中文字符
// 布尔:使用 boolean
boolean isStudent = true; // 是否是学生
boolean hasPermission = false; // 是否有权限public class DataTypeDemo {
public static void main(String[] args) {
// 整数类型
int age = 25;
long population = 7800000000L;
// 浮点类型
float price = 99.99f;
double pi = 3.14159265359;
// 字符类型
char grade = 'A';
// 布尔类型
boolean isStudent = true;
// 输出
System.out.println("年龄: " + age);
System.out.println("人口: " + population);
System.out.println("价格: " + price);
System.out.println("π: " + pi);
System.out.println("等级: " + grade);
System.out.println("是学生: " + isStudent);
}
}// 声明单个变量
int age;
String name;
// 声明多个变量
int x, y, z;
// 声明并初始化
int count = 0;
String message = "Hello";
// 常量(使用 final 关键字)
final double PI = 3.14159;
final int MAX_SIZE = 100;引用类型存储的是对象的引用(地址),而不是值本身。
// 创建字符串
String name = "Alice";
String greeting = "Hello, World!";
// 字符串拼接
String fullName = "Alice" + " " + "Smith";
// 常用字符串方法
int length = name.length(); // 获取长度: 5
String upper = name.toUpperCase(); // 转大写: ALICE
String lower = name.toLowerCase(); // 转小写: alice
boolean contains = name.contains("li"); // 包含判断: true
char firstChar = name.charAt(0); // 获取字符: A
int index = name.indexOf("li"); // 查找位置: 1
String sub = name.substring(0, 3); // 截取: Ali
boolean empty = name.isEmpty(); // 是否为空: false
String replaced = name.replace("li", "LI"); // 替换: ALIce
// 字符串比较
String s1 = "hello";
String s2 = "Hello";
System.out.println(s1.equals(s2)); // false(区分大小写)
System.out.println(s1.equalsIgnoreCase(s2)); // true(忽略大小写)// 声明数组
int[] numbers;
String[] names;
// 创建数组
numbers = new int[5]; // 创建长度为5的数组,默认值为0
names = new String[]{"Alice", "Bob", "Charlie"};
// 声明并初始化
int[] scores = {90, 85, 92, 88, 95};
// 访问数组元素
int firstScore = scores[0]; // 90(索引从0开始)
int lastScore = scores[4]; // 95
// 数组长度
int length = scores.length; // 5
// 遍历数组
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
// 增强for循环遍历
for (int score : scores) {
System.out.println(score);
}| 特性 | 基本类型 | 引用类型 |
|---|---|---|
| 存储内容 | 实际值 | 对象地址 |
| 存储位置 | 栈内存 | 堆内存 |
| 默认值 | 0、false等 | null |
| 赋值方式 | 值拷贝 | 引用拷贝 |
// 基本类型赋值:值拷贝
int a = 10;
int b = a; // b = 10
a = 20; // 修改a
System.out.println(b); // b仍然是10
// 引用类型赋值:引用拷贝
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; // arr2指向同一数组
arr1[0] = 100; // 修改arr1
System.out.println(arr2[0]); // arr2[0]也变成100小范围类型自动转换为大范围类型。
byte b = 10;
int i = b; // byte → int(自动转换)
int num = 100;
long l = num; // int → long(自动转换)
float f = 3.14f;
double d = f; // float → double(自动转换)大范围类型转换为小范围类型,可能丢失精度。
double d = 3.14;
int i = (int)d; // 3(小数部分丢失)
long l = 100L;
int num = (int)l; // long → int
int x = 128;
byte b = (byte)x; // 可能溢出判断以下变量声明是否正确:
int age = 25.5;
String name = "Alice";
char c = "A";
long num = 100L;
double price = 99.99f;
以下哪个不是 Java 的基本数据类型?
以下变量命名哪个是合法的?
声明一个整型变量 age 并赋值为 25:
编写代码:声明变量存储以下信息
写出以下代码的输出结果:
double d = 9.87;
int i = (int)d;
System.out.println(i);输出结果是: