第一部分:Java变量
理解变量的概念,学习如何声明和使用变量
学习目标
掌握变量声明、初始化和使用的方法,理解变量命名规则
什么是变量?
变量是程序中的基本存储单元,具有名称、类型和值。
变量相当于内存中的一个"命名容器",用于存储数据。
变量在内存中的表示
变量声明与初始化
Java是强类型语言,变量必须先声明后使用。
数据类型 变量名;
// 变量初始化语法
数据类型 变量名 = 初始值;
// 示例:
int age; // 声明一个整数变量
age = 25; // 初始化变量
double price = 99.99; // 声明并初始化
变量命名规则
- 由字母、数字、下划线(_)和美元符号($)组成
- 不能以数字开头
- 不能使用Java关键字(如int、class等)
- 区分大小写(myVar 和 myvar 是不同的变量)
- 使用有意义的名称(推荐使用驼峰命名法)
int studentAge;
double accountBalance;
String firstName;
// 非法变量名
int 2students; // 不能以数字开头
double class; // class是关键字
String first name; // 不能包含空格
变量作用域
变量的作用域决定了它在代码中的可见范围。
- 类变量(静态变量) - 整个类可见
- 实例变量 - 对象实例可见
- 局部变量 - 方法或代码块内可见
// 类变量
static int classVar = 10;
// 实例变量
int instanceVar = 20;
public void myMethod() {
// 局部变量
int localVar = 30;
}
}
学习小贴士
1. 变量命名要具有描述性,避免使用单个字母(循环计数器除外)
2. 局部变量使用前必须初始化,否则会编译错误
3. 尽量缩小变量的作用域,减少命名冲突的可能性
第二部分:Java常量
学习如何定义和使用不可变的值
学习目标
掌握final关键字的使用,理解常量的应用场景
什么是常量?
常量是在程序运行期间值不会改变的量。
使用final关键字定义常量,常量名通常使用大写字母。
final 数据类型 常量名 = 值;
// 示例:
final double PI = 3.14159;
final int MAX_USERS = 1000;
final String COMPANY_NAME = "码咚咚科技";
常量的特点
- 值在初始化后不可更改
- 必须在声明时或在构造函数中初始化
- 提高代码可读性和可维护性
- 避免"魔法数字"(意义不明确的数字)
- 编译器可以进行优化
final int MAX_VALUE = 100;
MAX_VALUE = 200; // 编译错误
常量与字面量
字面量是直接在代码中表示固定值的符号。
整数字面量
int octal = 0144; // 八进制
int hex = 0x64; // 十六进制
int binary = 0b1100100; // 二进制
浮点数字面量
double d = 3.14; // 默认double
double sci = 1.23e4; // 科学计数法(12300.0)
字符字面量
char tab = '\t'; // 转义字符
char unicode = '\u0041'; // Unicode字符
字符串字面量
String s2 = "多行文本" +
"支持换行";
学习小贴士
1. 对于程序中不会改变的值,优先使用常量而不是变量
2. 常量名使用全大写字母和下划线分隔单词(如MAX_VALUE)
3. 使用枚举类型代替一组相关的常量
第三部分:Java数据类型
理解Java的8种基本数据类型和引用类型
学习目标
掌握8种基本数据类型的特性,理解自动装箱和拆箱
数据类型分类
Java数据类型分为基本类型和引用类型两大类。
int num = 10;
// 引用类型:存储对象的内存地址
String name = "张三";
基本类型有8种,引用类型包括类、接口、数组等。
8种基本数据类型
Java提供了8种基本数据类型:
数据类型 | 大小 | 范围 | 默认值 |
---|---|---|---|
byte | 1字节 | -128 到 127 | 0 |
short | 2字节 | -32,768 到 32,767 | 0 |
int | 4字节 | -2^31 到 2^31-1 | 0 |
long | 8字节 | -2^63 到 2^63-1 | 0L |
float | 4字节 | 约 ±3.40282347E+38F | 0.0f |
double | 8字节 | 约 ±1.7976931348623157E+308 | 0.0d |
char | 2字节 | \u0000 到 \uffff | '\u0000' |
boolean | 未明确定义 | true 或 false | false |
数据类型选择
根据数据特性和需求选择合适的数据类型:
- 整数:优先使用int,大数值用long
- 小数:优先使用double,节省内存用float
- 字符:使用char表示单个字符
- 布尔值:boolean表示真/假
- 节省内存:byte和short用于数组或特定场景
int age = 25; // 常用整数
long population = 7800000000L; // 大整数
// 浮点类型选择
float price = 19.99f; // 单精度
double pi = 3.1415926535; // 双精度(默认)
类型转换
Java中的类型转换分为自动转换和强制转换。
int a = 100;
long b = a; // 自动转换为long
// 强制转换(大类型->小类型)
double x = 9.87;
int y = (int)x; // 强制转换为int,结果为9
强制转换可能导致数据丢失或精度降低
包装类与自动装箱
Java为每个基本类型提供了对应的包装类:
byte → Byte
short → Short
int → Integer
long → Long
float → Float
double → Double
char → Character
boolean → Boolean
自动装箱:基本类型自动转换为包装类对象
自动拆箱:包装类对象自动转换为基本类型
Integer num = 10; // 编译器自动转换为Integer.valueOf(10)
// 自动拆箱示例
int n = num; // 编译器自动转换为num.intValue()
学习小贴士
1. 默认使用int和double,除非有特殊需求
2. 浮点数比较时不要使用==,应使用差值小于某个极小值
3. 包装类用于泛型集合(如List
第四部分:动手练习
通过实践巩固所学知识
练习1:变量声明与使用
- 声明不同类型的变量(int, double, boolean, String)
- 给变量赋予合理的初始值
- 修改变量的值并打印输出
public class VariablePractice {
public static void main(String[] args) {
// 声明并初始化变量
int studentCount = 45;
double averageScore = 87.5;
boolean isPassed = true;
String courseName = "Java编程";
// 修改并输出变量值
studentCount = 48;
System.out.println("课程名称: " + courseName);
System.out.println("学生人数: " + studentCount);
System.out.println("平均分: " + averageScore);
System.out.println("是否通过: " + isPassed);
}
}
练习2:常量应用
- 定义数学常量(π、重力加速度等)
- 定义业务常量(最大登录次数、折扣率等)
- 在计算中使用这些常量
// 定义常量
static final double PI = 3.14159;
static final int MAX_LOGIN_ATTEMPTS = 5;
public static void main(String[] args) {
double radius = 5.0;
// 使用常量计算圆面积
double area = PI * radius * radius;
System.out.println("圆面积: " + area);
int attempts = 3;
// 使用常量判断
if (attempts >= MAX_LOGIN_ATTEMPTS) {
System.out.println("账户已锁定");
} else {
System.out.println("还可尝试" + (MAX_LOGIN_ATTEMPTS - attempts) + "次");
}
}
}
练习3:数据类型转换
- 实现不同数值类型之间的转换
- 字符串与数值类型的相互转换
- 处理转换中的边界情况
public static void main(String[] args) {
// 数值类型转换
int intValue = 100;
long longValue = intValue; // 自动转换
double doubleValue = 123.456;
int fromDouble = (int) doubleValue; // 强制转换
// 字符串转数值
String numberStr = "12345";
int num = Integer.parseInt(numberStr);
// 数值转字符串
String priceStr = String.valueOf(99.99);
String scoreStr = "" + 95; // 简单写法
// 处理转换异常
try {
int invalid = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("数字格式错误!");
}
}
}
第五部分:常见问题与总结
解决学习过程中的常见疑问
问题1:变量未初始化
- 错误信息:variable might not have been initialized
- 原因:局部变量使用前未赋值
- 解决方案:声明变量时初始化或在使用前赋值
int count;
System.out.println(count); // 编译错误
// 正确做法
int count = 0; // 声明时初始化
// 或
int count;
count = 10; // 使用前赋值
问题2:类型不匹配
- 错误信息:incompatible types
- 原因:试图将不兼容的类型赋值给变量
- 解决方案:使用类型转换或选择合适的数据类型
int num = 3.14; // double无法自动转为int
// 正确做法
int num = (int)3.14; // 强制转换
// 或
double num = 3.14; // 使用double类型
问题3:整数溢出
- 现象:大整数计算得到错误结果
- 原因:超出数据类型的表示范围
- 解决方案:使用更大范围的数据类型(如long)
int a = 2000000000;
int b = 2000000000;
int sum = a + b; // 溢出,得到负数
// 正确做法
long a = 2000000000L;
long b = 2000000000L;
long sum = a + b; // 正确结果
关键概念总结
- 变量:可变的存储单元,需要声明类型和名称
- 常量:不可变的值,使用final关键字声明
- 基本数据类型:8种,包括4种整数、2种浮点、1种字符、1种布尔
- 类型转换:自动转换(小->大),强制转换(大->小)
- 包装类:基本类型对应的对象形式,支持自动装箱/拆箱
学习成果检查清单
- ✅ 理解变量的概念并能正确声明变量
- ✅ 掌握常量的定义和使用场景
- ✅ 熟悉8种基本数据类型及其范围
- ✅ 能够进行正确的类型转换
- ✅ 了解包装类和自动装箱/拆箱机制
- ✅ 完成所有动手练习