当前位置: 首页 > news >正文

Java6.26


文章目录

  • Java核心概念整理笔记
    • 一、循环高级应用
      • 1. 平方根计算
      • 2. 质数判断
    • 二、数组详解
      • 1. 数组基本概念
      • 2. 数组初始化
      • 3. 数组地址值解析
      • 4. 数组遍历与处理
      • 5. 数组内存模型
    • 三、方法详解
      • 1. 方法基本概念
      • 2. 方法定义与调用
      • 3. 形参与实参
      • 4. 方法重载
    • 四、Java内存分配
      • 内存区域概览
      • 关键区别
    • 五、核心概念总结
      • 1. 循环优化要点
      • 2. 数组最佳实践
      • 3. 方法设计原则
      • 4. 内存管理技巧
      • 5. 调试技巧


Java核心概念整理笔记

一、循环高级应用

1. 平方根计算

import java.util.Scanner;public class SquareRootCalculator {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入一个正整数: ");int n = sc.nextInt();int root = 1;// 使用循环找到最大整数root,满足root² ≤ nwhile (root * root <= n) {root++;}System.out.println(n + "的平方根整数部分是: " + (root - 1));}
}

2. 质数判断

import java.util.Scanner;public class PrimeChecker {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入一个整数: ");int number = sc.nextInt();boolean isPrime = true;// 优化:只需检查到平方根for (int i = 2; i <= Math.sqrt(number); i++) {if (number % i == 0) {isPrime = false;break; // 发现因子立即退出循环}}System.out.println(number + (isPrime ? " 是质数" : " 不是质数"));}
}

二、数组详解

1. 数组基本概念

  • 定义:存储同种数据类型元素的容器
  • 特点:固定长度、索引访问、连续内存空间

2. 数组初始化

// 静态初始化
int[] staticArr = {1, 2, 3, 4, 5}; // 动态初始化
int[] dynamicArr = new int[5]; // 默认值:0
String[] strArr = new String[3]; // 默认值:null

3. 数组地址值解析

[I@4c873330 含义:

  • [:表示数组
  • I:表示int类型
  • @:分隔符
  • 4c873330:十六进制内存地址

4. 数组遍历与处理

public class ArrayProcessor {public static void main(String[] args) {int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 增强for循环遍历for (int num : numbers) {// 三元运算符处理奇偶数int result = (num % 2 == 0) ? num / 2 : num * 2;System.out.print(result + " ");}}
}

5. 数组内存模型

public class ArrayMemoryDemo {public static void main(String[] args) {int[] arr1 = {10, 20};int[] arr2 = arr1; // 共享内存空间arr2[0] = 99; // 修改会影响arr1System.out.println(arr1[0]); // 输出99}
}

三、方法详解

1. 方法基本概念

  • 作用:封装重复代码,提高复用性和可维护性
  • 特点:程序最小执行单元

2. 方法定义与调用

public class MethodDemo {public static void main(String[] args) {// 调用无参方法greet();// 调用带参方法printSum(5, 8);// 调用带返回值方法int result = multiply(4, 6);System.out.println("乘积: " + result);}// 无参方法static void greet() {System.out.println("Hello, Java!");}// 带参方法static void printSum(int a, int b) {System.out.println("和: " + (a + b));}// 带返回值方法static int multiply(int x, int y) {return x * y;}
}

3. 形参与实参

  • 形参:方法定义中的参数(形式参数)
  • 实参:方法调用时传入的参数(实际参数)

4. 方法重载

public class Calculator {// 整数加法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;}
}

重载规则

  1. 方法名相同
  2. 参数列表不同(类型/数量/顺序)
  3. 与返回值类型无关

四、Java内存分配

内存区域概览

内存区域存储内容生命周期
栈(Stack)局部变量、方法调用方法执行期间
堆(Heap)对象实例、数组直到被GC回收
方法区类信息、常量、静态变量JVM运行期间
寄存器CPU指令和操作数指令执行期间
本地方法栈Native方法执行信息Native方法期间

关键区别

特性基本数据类型引用数据类型
存储位置栈内存堆内存
存储内容实际值对象地址
内存管理自动回收通过垃圾回收(GC)
示例int, double, char数组, String, 自定义对象

五、核心概念总结

1. 循环优化要点

  • 减少循环内重复计算
  • 合理使用break/continue
  • 选择最优循环边界
  • 避免嵌套过深

2. 数组最佳实践

  • 使用增强for循环遍历
  • 注意数组边界(避免越界)
  • 大数组考虑内存占用
  • 多维数组谨慎使用

3. 方法设计原则

  • 单一职责(一个方法只做一件事)
  • 合理命名(动词+名词,如calculateSum)
  • 适度参数(不超过5个)
  • 明确返回值

4. 内存管理技巧

  1. 基本类型优先使用局部变量
  2. 及时解除无用对象引用
  3. 避免创建不必要的大对象
  4. 理解对象生命周期

5. 调试技巧

// 打印数组内容
System.out.println(Arrays.toString(arr));// 查看对象哈希码(近似地址)
System.out.println(System.identityHashCode(obj));

学习建议:通过实际编码练习巩固概念,使用调试工具观察内存变化,尝试重构代码提高可读性。

相关文章:

  • 西部数据网站备案流程郑州模板网站建设
  • 同步网站内容怎么做友情链接购买
  • 常州做网站公司排名搜索引擎付费推广
  • 织梦网站首页幻灯片不显示网络推广项目
  • 做油和米的网站班级优化大师官方网站
  • 东营市公司网站建设价格百度百度一下官网
  • 如何将视频从 iPhone 发送到 Android 设备
  • iOS App 上架流程工具链解析:开发者视角下的协作实践总结
  • 本地部署开源时间跟踪工具 Kimai 并实现外部访问( Windows 版本)
  • bug复盘:MCP SSE Client 生命周期问题之context.Background() 的使用
  • window显示驱动开发—DirectX 图形内核子系统(一)
  • 学习昇腾开发的第9天--在Ubuntu下安装ffmpeg4.2.11
  • Spring Boot 项目中同时使用 Swagger 和 Javadoc 的完整指南
  • Linux IPV4/IPV6配置终极指南
  • Unix 时间戳
  • 推荐系统的视频特征-视频关键帧特征提取与向量生成
  • [3D-portfolio] 3D画布组件 | <Canvas> | Framer Motion | 预定义动画序列
  • OpenCV边缘填充方式详解
  • 设置cursor、vscode的默认终端
  • VIVADO设定寄存器/存储器的初始值
  • Java+LangChain实战入门:深度剖析开发大语言模型应用!
  • [论文阅读] 人工智能+ | 用大语言模型给建筑合规检查“开挂“:BIM领域的自动化革命
  • PHP的
  • DeepSeek16-open-webui Pipelines开发填坑
  • 课堂笔记:吴恩达的AI课(AI FOR EVERYONE)-W1 机器学习什么能做,什么不能做
  • 算法 按位运算