第一部分:基础语法回顾

掌握Java程序的基本结构和语法规则

学习目标

理解Java程序结构、标识符命名规则、注释使用和基本输入输出

1

Java程序基本结构

每个Java程序都包含以下基本元素:

// 类定义 - 文件名必须与类名一致
public class HelloWorld {
    // main方法 - 程序入口
    public static void main(String[] args) {
        // 输出语句
        System.out.println("Hello, Java World!");
    }
}
2

标识符命名规则

  • 只能包含字母、数字、下划线(_)和美元符号($)
  • 不能以数字开头
  • 不能是Java关键字(如class, public等)
  • 区分大小写
  • 使用驼峰命名法(camelCase)
记忆技巧: 有效标识符:myVariable, _count, $value, MAX_SIZE
无效标识符:123test, my-var, public, class
3

注释的使用

注释用于解释代码,不会被编译器执行

// 单行注释 - 解释一行代码

/*
 * 多行注释 - 解释一段代码
 * 可以跨越多行
*/


/**
 * 文档注释 - 用于生成API文档
 * @author 码咚咚
*/
4

输入输出操作

Java标准输入输出示例:

import java.util.Scanner;

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种原始类型

引用数据类型

类、接口、数组

1

基本数据类型

数据类型 大小 默认值 取值范围
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
2

变量声明与初始化

变量是存储数据的基本单元:

// 声明并初始化变量
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;
3

类型转换

Java中的类型转换分为自动类型转换和强制类型转换:

byte
short
int
long
float
double
// 自动类型转换(小转大)
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

1

运算符优先级

运算符按照优先级从高到低执行:

  1. 括号 ()
  2. 一元运算符:++ -- ! ~
  3. 乘除取模:* / %
  4. 加减:+ -
  5. 移位:<< >> >>>
  6. 关系:< > <= >= instanceof
  7. 相等:== !=
  8. 位与:&
  9. 位异或:^
  10. 位或:|
  11. 逻辑与:&&
  12. 逻辑或:||
  13. 三元运算符:? :
  14. 赋值:= += -= *= /= %=
2

表达式示例

int a = 10, b = 5, c = 2;
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等控制结构

1

条件语句 - if/else

int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
2

条件语句 - switch

int day = 3;
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); // 输出"星期三"
3

循环语句 - for

// 标准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
4

循环语句 - while/do-while

// 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循环中,确保循环变量有明确的递增/递减逻辑。

第五部分:方法定义与调用

掌握方法的定义、调用和参数传递

学习目标

能够定义方法、理解参数传递机制、使用方法重载

1

方法定义

方法的基本结构:

// 方法定义语法:
// [访问修饰符] [static] 返回类型 方法名([参数列表]) { ... }

// 示例:计算两个整数之和
public static int add(int a, int b) {
    int sum = a + b;
    return sum;
}
2

方法调用

调用已定义的方法:

public static void main(String[] args) {
    // 调用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);
}
3

方法重载

在同一类中,方法名相同但参数列表不同:

// 方法重载示例
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); // 调用三个参数版本
4

参数传递机制

Java中只有值传递:

public static void main(String[] args) {
    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
}
Java中基本数据类型是值传递,传递的是值的副本。对象引用也是值传递,传递的是引用的副本(指向同一个对象)。

第六部分:数组使用

掌握数组的声明、初始化和常用操作

学习目标

能够创建和使用一维、二维数组,理解数组常用方法

1

数组声明与初始化

// 声明数组
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}};
2

数组常用操作

int[] arr = {10, 20, 30, 40, 50};

// 访问元素
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); // 二分查找
3

数组常见问题

数组越界

访问超出数组长度的索引

int[] arr = new int[3];
arr[3] = 10; // ArrayIndexOutOfBoundsException

空指针异常

访问未初始化的数组

int[] arr = null;
System.out.println(arr[0]); // NullPointerException

数组长度固定

数组创建后长度不可变

int[] arr = new int[5];
arr.length = 10; // 编译错误

学习小贴士

使用Arrays.toString()方法可以方便地打印数组内容:

int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3]

第七部分:综合练习

通过练习巩固第一阶段所学知识

学习目标

综合运用变量、控制流程、方法和数组解决问题

知识测验

1. 下列哪个不是Java的基本数据类型?

A. int
B. String
C. boolean
D. double

2. 以下代码输出结果是什么?

int x = 5;
int y = x++;
int z = ++x;
System.out.println(y + ", " + z);
A. 5, 6
B. 5, 7
C. 5, 7
D. 6, 7

3. 以下方法重载正确的是?

A. void method(int a) 和 int method(int a)
B. void method(int a) 和 void method(int b)
C. void method(int a) 和 void method(int a, int b)
D. void method(int a) 和 void method(double a)

编程练习

编写一个Java程序,实现以下功能:

  • 创建一个包含10个随机整数(1-100)的数组
  • 找出数组中的最大值和最小值
  • 计算数组元素的平均值
  • 对数组进行排序并输出
  • 将上述功能封装在独立的方法中

示例代码框架:

import java.util.Arrays;
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));
    }

    // 在此处实现各个方法
}

学习小贴士

完成练习后,尝试添加更多功能:查找特定元素、反转数组、统计奇偶数个数等。实践是巩固知识的最佳方式。