文章目录
Java编程基础核心笔记:循环、数组与方法精要
一、循环高级应用训练
1. 平方根计算案例
import java.util.Scanner;
public class SquareRootCalculator {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int zhengShu = 2;
while(zhengShu * zhengShu <= n) {
++zhengShu;
}
System.out.println(zhengShu - 1);
}
}
2. 质数判断案例
import java.util.Scanner;
public class PrimeNumberChecker {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int zhiShu = sc.nextInt();
for(int i = 2; i <= zhiShu; i++) {
for(int j = 2; j <= i; j++) {
if(i * j == zhiShu) {
System.out.println("有质数");
break;
} else {
System.out.println("无质数");
}
}
}
}
}
二、数组核心概念
1. 数组基础
- 定义:存储同种数据类型的容器
- 特点:固定长度、索引访问、连续内存
数组初始化方式
// 静态初始化(直接指定元素)
int[] staticArr = {1, 2, 3, 4, 5};
// 动态初始化(指定长度)
int[] dynamicArr = new int[5]; // 默认值:0
String[] strArr = new String[3]; // 默认值:null
2. 数组地址值解析
[I@4c873330
结构含义:
[
:表示数组I
:表示int类型@
:分隔符4c873330
:十六进制内存地址
3. 数组遍历与处理
public class ArrayProcessor {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int i = 0; i < arr.length; i++) {
if (arr[i] % 2 == 0) {
System.out.println(arr[i] / 2);
} else {
System.out.println(arr[i] * 2);
}
}
}
}
4. 数组内存模型
public class ArrayMemoryDemo {
public static void main(String[] args) {
int[] arr1 = {11, 22};
int[] arr2 = arr1; // 共享内存空间
arr2[0] = 99; // 修改会影响arr1
System.out.println(arr1[0]); // 输出99
}
}
三、方法核心机制
1. 方法基础概念
- 本质:程序最小执行单元
- 作用:封装重复代码,提高复用性和可维护性
方法定义与调用
public class MethodDemo {
// 无参方法
public static void greet() {
System.out.println("Hello, World!");
}
// 带参方法
public static void printSum(int a, int b) {
System.out.println("Sum: " + (a + b));
}
public static void main(String[] args) {
greet(); // 方法调用
printSum(10, 20); // 带参调用
}
}
2. 形参与实参
概念 | 定义位置 | 作用 | 示例 |
---|---|---|---|
形参 | 方法声明中 | 定义方法接收的数据 | void print(int num) 中的 num |
实参 | 方法调用中 | 实际传递的值 | print(5) 中的 5 |
3. 带返回值方法
public class Calculator {
// 方法定义
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
// 1. 直接调用
add(5, 3);
// 2. 赋值调用
int result = add(5, 3);
// 3. 输出调用
System.out.println(add(5, 3));
}
}
4. 方法重载机制
public class MathUtils {
// 整数加法
static int add(int a, int b) {
return a + b;
}
// 重载1:双精度加法(类型不同)
static double add(double a, double b) {
return a + b;
}
// 重载2:三数相加(数量不同)
static int add(int a, int b, int c) {
return a + b + c;
}
}
重载规则:
- 方法名必须相同
- 参数列表必须不同(类型/数量/顺序)
- 与返回值类型无关
四、Java内存模型
内存区域划分
内存区域 | 存储内容 | 生命周期 |
---|---|---|
栈(Stack) | 局部变量、方法调用 | 方法执行期间 |
堆(Heap) | 对象实例、数组 | 直到被GC回收 |
方法区 | 类信息、常量、静态变量 | JVM运行期间 |
本地方法栈 | Native方法执行信息 | Native方法期间 |
寄存器 | CPU指令和操作数 | 指令执行期间 |
数据类型存储差异
特性 | 基本数据类型 | 引用数据类型 |
---|---|---|
存储内容 | 实际值 | 对象地址 |
内存位置 | 栈内存 | 堆内存 |
示例 | int, double, char | 数组, String, 自定义对象 |
五、核心概念总结
1. 循环编程要点
- 避免死循环(确保有终止条件)
- 优化循环边界(如平方根案例)
- 减少循环内重复计算
- 合理使用break/continue
2. 数组使用准则
- 注意数组边界(防止越界异常)
- 遍历优先使用标准for循环
- 大数组考虑内存占用
- 理解多维数组存储结构
3. 方法设计原则
- 单一职责:一个方法只做一件事
- 合理命名:动词+名词(如calculateSum)
- 参数控制:不超过5个参数
- 明确返回值:避免void的过度使用
4. 内存管理技巧
- 基本类型优先使用局部变量
- 及时解除无用对象引用
- 避免创建不必要的大对象
- 理解对象生命周期
学习建议:通过调试工具观察内存变化,编写测试用例验证方法行为,重构重复代码提高质量。理解值传递机制是避免隐蔽Bug的关键,而掌握封装思想是构建健壮程序的基石。