Java 结构

一、程序基本结构

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 { }。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值