一、程序基本结构
Java 程序的最小运行单位是类,所有代码必须包裹在类中,程序入口是固定格式的 main 方法——这是 JVM 执行程序的唯一入口点。
一个完整的简单 Java 程序结构如下:
1. 包声明(可选):用 package 语句指定类所属的包,需放在文件最顶部,例如 package com.example;。
2. 导入语句(可选):用 import 引入其他包的类,避免全类名书写,例如 import java.util.Scanner;。
3. 类定义:用 class 关键字声明类,类名需与文件名一致(公共类必须一致),例如 public class HelloWorld。
4. main 方法:程序执行起点,格式固定为 public static void main(String[] args),方法体中的代码按顺序执行。
二、数据类型与变量
1. 基本数据类型
Java 有 8 种基本数据类型,直接存储值,而非引用,分为四类:
• 整数型:byte(1字节)、short(2字节)、int(4字节,默认整数类型)、long(8字节,需加后缀 L)。
• 浮点型:float(4字节,需加后缀 F)、double(8字节,默认浮点类型),用于表示小数。
• 字符型:char(2字节,Unicode 编码),用单引号包裹单个字符或转义字符,例如 'A'、'\n'。
• 布尔型:boolean(1字节),仅两个值 true(真)和 false(假),用于逻辑判断。
2. 引用数据类型
除基本类型外,其余均为引用类型(如 String、数组、类、接口),存储的是对象在堆内存中的地址,而非对象本身。
• 字符串 String 是常用引用类型,用双引号包裹,例如 String name = "Java";,不可变(修改时会创建新对象)。
• 数组:相同类型元素的有序集合,声明格式为 类型[] 数组名 或 类型 数组名[],需初始化后使用,例如 int[] arr = {1,2,3};。
3. 变量声明与初始化
变量需先声明(指定类型和名称),再初始化(赋值),才能使用,语法为 类型 变量名 = 值;。
• 局部变量:声明在方法或代码块中,无默认值,必须手动初始化。
• 成员变量:声明在类中、方法外,有默认值(整数0、浮点0.0、布尔false、引用null)。
三、运算符与表达式
1. 算术运算符
• 基本运算:+(加)、-(减)、*(乘)、/(除,整数除法取整)、%(取余)。
• 自增自减:i++(先使用后自增)、++i(先自增后使用),i--、--i 同理。
2. 关系运算符
用于判断两个值的关系,结果为 boolean 类型:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
3. 逻辑运算符
用于连接布尔表达式,实现复杂判断:
• 与:&&(短路与,左侧为 false 时右侧不执行)、&(非短路与)。
• 或:||(短路或,左侧为 true 时右侧不执行)、|(非短路或)。
• 非:!(取反,!true 为 false)。
4. 赋值与其他运算符
• 赋值运算符:=(直接赋值)、+=、-=、*=、/=(复合赋值,自动类型转换)。
• 三元运算符:条件 ? 表达式1 : 表达式2,条件为 true 执行表达式1,否则执行表达式2,例如 int max = a > b ? a : b;。
四、流程控制语句
1. 分支结构
• if-else:单条件判断,语法为 if (条件) { 代码块1 } else { 代码块2 },可嵌套 if-else if-else 实现多条件判断。
• switch:多值匹配,基于 byte、short、int、char 及包装类、String 类型,语法为 switch (表达式) { case 值1: 代码; break; default: 默认代码; },break 用于跳出分支,否则穿透执行。
2. 循环结构
• for:适合已知循环次数的场景,语法为 for (初始化; 循环条件; 迭代语句) { 循环体 },例如 for (int i=0; i<10; i++) { System.out.println(i); }。
• while:适合未知循环次数的场景,语法为 while (循环条件) { 循环体 },先判断条件再执行。
• do-while:至少执行一次循环体,语法为 do { 循环体 } while (循环条件);,先执行再判断条件。
3. 跳转语句
• break:跳出当前循环或 switch 分支。
• continue:跳过当前循环的剩余部分,直接进入下一次循环。
• return:结束当前方法,返回指定值(无返回值方法用 return;)。
五、类与对象
1. 类的定义
类是对象的模板,包含属性(成员变量)和方法(行为),语法为:
public class Person {
// 属性(成员变量)
String name;
int age;
// 方法(行为)
public void eat() {
System.out.println(name + "在吃饭");
}
}
2. 对象的创建与使用
• 创建对象:用 new 关键字实例化类,例如 Person p = new Person();。
• 访问成员:通过 对象.属性 赋值/取值,对象.方法() 调用方法,例如 p.name = "张三"; p.eat();。
3. 构造方法
• 用于对象初始化,名称与类名一致,无返回值类型(连 void 都没有)。
• 无参构造:默认存在(若自定义构造方法则消失);可自定义有参构造,实现属性初始化,例如 public Person(String name, int age) { this.name = name; this.age = age; }。
六、数组
1. 数组声明与初始化
• 声明:int[] arr; 或 int arr[];(推荐前者,更清晰)。
• 初始化:
◦ 静态初始化:int[] arr = {1,2,3,4};(直接指定元素)。
◦ 动态初始化:int[] arr = new int[4];(指定长度,元素为默认值)。
2. 数组访问与遍历
• 访问:通过索引(从 0 开始)访问元素,arr[0] 表示第一个元素,索引越界会抛出 ArrayIndexOutOfBoundsException。
• 遍历:用 for 循环(for (int i=0; i<arr.length; i++))或增强 for 循环(for (int num : arr) { System.out.println(num); })。
七、异常处理
1. 异常概念
异常是程序运行时的错误(如空指针、数组越界),若不处理会导致程序崩溃,Java 用异常类描述异常信息。
2. 异常处理结构
• try-catch:捕获并处理异常,try 包裹可能出错的代码,catch 捕获指定异常并处理,可多个 catch 捕获不同异常。
• finally:无论是否发生异常,都会执行的代码块(常用于关闭资源),语法为 try { 代码 } catch (异常类型 e) { 处理代码 } finally { 释放资源 }。
• throw:手动抛出异常,例如 throw new NullPointerException("空指针异常");。
• throws:声明方法可能抛出的异常,由调用者处理,例如 public void method() throws IOException { }。
1671

被折叠的 条评论
为什么被折叠?



