第 2 章 · 基本程序设计

2.1 顺序结构

程序默认按语句书写顺序自上而下执行,是最基本的控制流。每条语句以分号结束。

2.2 基本数据类型

Java 有 8 种基本类型:byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean(1)。

int width = 10;      // 变量:值可变
final int MAX = 100; // 常量:final 修饰,值不可变
  • 声明语法 类型 变量名 = 初值,变量必须先定义并赋值再使用。
  • 标识符由字母、数字、_$ 组成,不能以数字开头,不能是关键字。

对比 C:Java 的基本类型跨平台定长——int 永远是 4 字节,而 C 的 int 长度随平台/编译器变化。Java 的 boolean 独立于整数,C 中用非零整数表达真假。

2.3 运算符与表达式

算术+ - * / %;整数除法向零截断(7/2 == 3)。赋值= += -= *= /= %=

  • 递增递减 ++ / -- 分前缀、后缀两种语义。
  • 运算优先级:先乘除后加减,赋值最低,可用括号显式指定。

2.4 数据类型转换

  • 自动转换(隐式):小范围 → 大范围,如 intlongdouble
  • 强制转换(显式):大范围 → 小范围,可能丢失精度或溢出。
double d = 3.14;
int i = (int) d;  // 截断小数,得到 3

对比 C:C 允许很多危险隐式转换(如把 double 赋给 int 只给警告),Java 收窄必须显式强转,更安全。

2.5 基于控制台的基本输入输出

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();          // 读整数
String s = sc.nextLine();      // 读一行
System.out.printf("%d %s%n", n, s);
  • System.out.println 输出并换行,printf 支持格式化。
  • 输入需用 Scanner(或 System.in 包装流)。

2.6 实例学习

典型顺序结构问题:求矩形周长面积、交换两个变量、求三位数各位之和。

// 不借助临时变量交换(仅演示,实际建议用临时变量)
a = a + b; b = a - b; a = a - b;

2.7 与其他语言对比

  • C/C++:输入输出用 scanf/printfcin/cout,Java 统一走 System.outScanner,更面向对象但更啰嗦。
  • Pythoninput()/print() 极简,且无需声明类型;Java 的静态类型在编译期就能拦住类型错误。