第一部分:基础语法回顾
掌握Java程序的基本结构和语法规则
学习目标
理解Java程序结构、标识符命名规则、注释使用和基本输入输出
Java程序基本结构
每个Java程序都包含以下基本元素:
public class HelloWorld {
// main方法 - 程序入口
public static void main(String[] args) {
// 输出语句
System.out.println("Hello, Java World!");
}
}
标识符命名规则
- 只能包含字母、数字、下划线(_)和美元符号($)
- 不能以数字开头
- 不能是Java关键字(如class, public等)
- 区分大小写
- 使用驼峰命名法(camelCase)
无效标识符:123test, my-var, public, class
注释的使用
注释用于解释代码,不会被编译器执行
/*
* 多行注释 - 解释一段代码
* 可以跨越多行
*/
/**
* 文档注释 - 用于生成API文档
* @author 码咚咚
*/
输入输出操作
Java标准输入输出示例:
public class InputOutputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您的姓名: ");
String name = scanner.nextLine();
System.out.println("您好, " + name + "! 欢迎学习Java。");
scanner.close();
}
}
学习小贴士
Java是严格区分大小写的语言,类名通常使用大驼峰命名法(如HelloWorld),变量和方法使用小驼峰命名法(如myVariable)。良好的命名习惯能让代码更易读易懂。
第二部分:数据类型与变量
理解Java的基本数据类型和变量声明使用
学习目标
掌握8种基本数据类型,理解变量声明、初始化和作用域
基本数据类型
8种原始类型
引用数据类型
类、接口、数组
基本数据类型
数据类型 | 大小 | 默认值 | 取值范围 |
---|---|---|---|
byte | 8位 | 0 | -128 ~ 127 |
short | 16位 | 0 | -32,768 ~ 32,767 |
int | 32位 | 0 | -231 ~ 231-1 |
long | 64位 | 0L | -263 ~ 263-1 |
float | 32位 | 0.0f | ±1.4E-45 ~ ±3.4E38 |
double | 64位 | 0.0d | ±4.9E-324 ~ ±1.7E308 |
char | 16位 | '\u0000' | 0 ~ 65,535 |
boolean | 1位 | false | true/false |
变量声明与初始化
变量是存储数据的基本单元:
int age = 25;
double price = 19.99;
char grade = 'A';
boolean isStudent = true;
String name = "张三";
// 先声明后赋值
int count;
count = 10;
// 常量使用final关键字
final double PI = 3.14159;
类型转换
Java中的类型转换分为自动类型转换和强制类型转换:
int numInt = 100;
long numLong = numInt; // 自动转换
// 强制类型转换(大转小)
double numDouble = 100.04;
int numInt2 = (int) numDouble; // 结果为100,丢失精度
学习小贴士
选择合适的数据类型:对于整数计算优先使用int,浮点数计算优先使用double。当需要精确计算(如金融领域)时,使用BigDecimal类代替double。
第三部分:运算符与表达式
掌握Java中的运算符和表达式使用
学习目标
熟练使用算术、关系、逻辑运算符,理解运算符优先级
算术运算符
- + 加法
- - 减法
- * 乘法
- / 除法
- % 取模(余数)
- ++ 自增
- -- 自减
int a = 10 + 5; // 15
int b = 10 % 3; // 1
关系运算符
- == 等于
- != 不等于
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
boolean result = (10 > 5); // true
boolean eq = (10 == 10); // true
逻辑运算符
- && 逻辑与
- || 逻辑或
- ! 逻辑非
boolean and = (true && false); // false
boolean or = (true || false); // true
运算符优先级
运算符按照优先级从高到低执行:
- 括号 ()
- 一元运算符:++ -- ! ~
- 乘除取模:* / %
- 加减:+ -
- 移位:<< >> >>>
- 关系:< > <= >= instanceof
- 相等:== !=
- 位与:&
- 位异或:^
- 位或:|
- 逻辑与:&&
- 逻辑或:||
- 三元运算符:? :
- 赋值:= += -= *= /= %=
表达式示例
int result1 = a + b * c; // 10 + (5*2) = 20
int result2 = (a + b) * c; // (10+5)*2 = 30
boolean result3 = a > b && b > c; // true && true = true
int result4 = a++ + --b; // 10 + 4 = 14 (a变为11, b变为4)
学习小贴士
当表达式较复杂时,使用括号明确运算顺序,避免依赖优先级规则。这样既能提高代码可读性,也能减少错误。
第四部分:控制流程
掌握条件判断和循环结构
学习目标
熟练使用if-else、switch、for、while等控制结构
条件语句 - if/else
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 80) {
System.out.println("良好");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
条件语句 - switch
String dayName;
switch (day) {
case 1: dayName = "星期一"; break;
case 2: dayName = "星期二"; break;
case 3: dayName = "星期三"; break;
case 4: dayName = "星期四"; break;
case 5: dayName = "星期五"; break;
default: dayName = "周末";
}
System.out.println(dayName); // 输出"星期三"
循环语句 - for
for (int i = 1; i <= 5; i++) {
System.out.println("循环次数: " + i);
}
// 增强for循环(遍历数组)
int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
System.out.print(num + " ");
}
// 输出: 1 2 3 4 5
循环语句 - while/do-while
int count = 1;
while (count <= 3) {
System.out.println("while循环: " + count);
count++;
}
// do-while循环(至少执行一次)
int num = 5;
do {
System.out.println("do-while: " + num);
num--;
} while (num > 0);
学习小贴士
避免无限循环:在while和do-while循环中,确保循环条件最终会变为false。在for循环中,确保循环变量有明确的递增/递减逻辑。
第五部分:方法定义与调用
掌握方法的定义、调用和参数传递
学习目标
能够定义方法、理解参数传递机制、使用方法重载
方法定义
方法的基本结构:
// [访问修饰符] [static] 返回类型 方法名([参数列表]) { ... }
// 示例:计算两个整数之和
public static int add(int a, int b) {
int sum = a + b;
return sum;
}
方法调用
调用已定义的方法:
// 调用add方法
int result = add(5, 3);
System.out.println("5 + 3 = " + result); // 输出8
// 调用无返回值方法
printMessage("Hello, Method!");
}
// 无返回值方法
public static void printMessage(String msg) {
System.out.println(msg);
}
方法重载
在同一类中,方法名相同但参数列表不同:
public static int add(int a, int b) {
return a + b;
}
// 重载add方法(参数类型不同)
public static double add(double a, double b) {
return a + b;
}
// 重载add方法(参数个数不同)
public static int add(int a, int b, int c) {
return a + b + c;
}
// 调用不同的重载方法
add(2, 3); // 调用int版本
add(2.5, 3.7); // 调用double版本
add(1, 2, 3); // 调用三个参数版本
参数传递机制
Java中只有值传递:
int num = 10;
System.out.println("调用前: " + num); // 10
changeValue(num);
System.out.println("调用后: " + num); // 10 (不变)
}
public static void changeValue(int x) {
x = 20;
System.out.println("方法内: " + x); // 20
}
第六部分:数组使用
掌握数组的声明、初始化和常用操作
学习目标
能够创建和使用一维、二维数组,理解数组常用方法
数组声明与初始化
int[] numbers; // 推荐方式
int numbers[]; // 不推荐
// 初始化数组
numbers = new int[5]; // 长度为5,元素默认0
// 声明并初始化
int[] scores = {90, 85, 78, 92, 88};
// 二维数组
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
数组常用操作
// 访问元素
int first = arr[0]; // 10
int last = arr[arr.length - 1]; // 50
// 修改元素
arr[1] = 25; // {10, 25, 30, 40, 50}
// 遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// 使用Arrays类
Arrays.sort(arr); // 排序
int index = Arrays.binarySearch(arr, 30); // 二分查找
数组常见问题
数组越界
访问超出数组长度的索引
arr[3] = 10; // ArrayIndexOutOfBoundsException
空指针异常
访问未初始化的数组
System.out.println(arr[0]); // NullPointerException
数组长度固定
数组创建后长度不可变
arr.length = 10; // 编译错误
学习小贴士
使用Arrays.toString()方法可以方便地打印数组内容:
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3]
第七部分:综合练习
通过练习巩固第一阶段所学知识
学习目标
综合运用变量、控制流程、方法和数组解决问题
知识测验
1. 下列哪个不是Java的基本数据类型?
2. 以下代码输出结果是什么?
int y = x++;
int z = ++x;
System.out.println(y + ", " + z);
3. 以下方法重载正确的是?
编程练习
编写一个Java程序,实现以下功能:
- 创建一个包含10个随机整数(1-100)的数组
- 找出数组中的最大值和最小值
- 计算数组元素的平均值
- 对数组进行排序并输出
- 将上述功能封装在独立的方法中
示例代码框架:
import java.util.Random;
public class ArrayOperations {
public static void main(String[] args) {
// 创建随机数组
int[] array = generateRandomArray(10);
System.out.println("原始数组: " + Arrays.toString(array));
// 找出最大值
int max = findMax(array);
System.out.println("最大值: " + max);
// 找出最小值
int min = findMin(array);
System.out.println("最小值: " + min);
// 计算平均值
double average = calculateAverage(array);
System.out.println("平均值: " + average);
// 排序数组
sortArray(array);
System.out.println("排序后: " + Arrays.toString(array));
}
// 在此处实现各个方法
}
学习小贴士
完成练习后,尝试添加更多功能:查找特定元素、反转数组、统计奇偶数个数等。实践是巩固知识的最佳方式。