Java笔记-3 函数和数组
一、函数方法1. 基础概念函数 方法程序运行本质是函数执行main 是程序入口函数完整语法修饰符 返回值类型 方法名(形参列表){ 代码逻辑; return 返回值; // void方法可省略return也可单独写return; }public class Main{ public static void main(String[] args) { song(重要的事情说三遍,3);//调用函数 } static void song(String s,int n){//定义函数 for (int i0;in;i){ System.out.println(s); } } } //输出结果 重要的事情说三遍 重要的事情说三遍 重要的事情说三遍 进程已结束退出代码为 0三类基础方法示例无参无返回值static void speak(){}有参无返回值static void speak(String msg,String name){}有参有返回值static double area(double r){return Math.PI*r*r;}2. 形参与实参形参方法定义时括号内变量属于方法局部变量实参调用方法传入的数据传参本质值拷贝两者名称无关调用规则实参个数、类型、顺序必须和形参匹配3. return 规则执行到return方法立刻结束有返回值类型int/double/boolean 等所有代码分支必须有 return否则编译报错void无返回值可不用 return也能写return;直接终止方法4. JVM 内存栈 堆栈内存Stack每个方法调用生成栈帧压入虚拟机栈局部变量、形参全部存在栈帧中方法执行完毕栈帧弹出销毁局部变量直接消失堆内存Heapnew 创建的数组、对象实体存放在堆栈中引用变量仅保存堆内存地址 多个引用指向同一堆实体一个修改全部可见无引用指向则变为垃圾等待 GC 回收5. 方法重载定义同一个类方法名相同参数列表不同多个同名方法共存判断标准只看参数返回值不参与重载判定 满足任意一条即为重载参数个数不同参数类型不同参数顺序不同不构成重载仅返回值不同、参数完全一致 → 编译报错6. 函数经典练习题思路//编写程序接收用户输入年份自定义方法判断平闰年 //需求 //方法接收 int 类型年份参数返回 boolean 类型 //闰年规则能被 400 整除或能被 4 整除且不能被 100 整除 //使用 Scanner 控制台输入年份调用判断方法输出该年是闰年还是平年public class Test4{ public static void main(String[] args) { Scanner scan new Scanner(System.in); System.out.println(请输入年份); int yearscan.nextInt(); boolean resultisLeapYear(year); System.out.println(resulttrue?闰年:平年); scan.close(); } static boolean isLeapYear(int year){ if(year%4000){ return true; }else if(year%40year%100!0){ return true; } return false; } }二、一维数组1. 核心定义数组同类型元素容器下标从 0 开始属于引用数据类型2. 合法声明写法int[] arr new int[5]; int arr[] new int[5]; int[] arr new int[]{1,2,3}; int[] arr {1,2,3};3. 绝对错误写法int[5] arr ...等号左侧[]不能写长度int[] arr new int[]未指定长度、无初始化值int[] arr new int[3]{1,2,3}初始化列表和长度不能共存数组元素类型不统一float[] arr{1,3.14}3.14 默认 double4. 基础属性与规则下标支持byte/short/int/char不允许 long.length获取数组长度是属性不是方法无括号数组长度创建后不可修改扩容本质新建数组复制元素默认初始值基本类型int0、double0.0、booleanfalse、char 空字符引用类型String / 数组nullchar 数组直接打印输出字符其他数组打印地址哈希值5. 两大运行异常数组下标越界ArrayIndexOutOfBoundsException访问下标 ≥ 数组长度public class test2 { public static void main(String[] args) { int[] a {1,2,3,4,5}; for(int i 0;ia.length;i){ System.out.println(a[i]); } } } //输出结果 1 2 3 4 5 Exception in thread main java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 at test2.main(test2.java:5)空指针异常NullPointerException数组引用赋值null后访问.length或任意下标触发 局部变量不初始化不能直接打印使用6. 数组复制4 种方式注意int[] a2 a1仅复制栈引用堆数组共用修改互相影响不算真正复制手动循环遍历复制基础写法arr.clone()数组克隆浅拷贝Arrays.copyOf(源数组,新长度)工具类复制可同步扩容System.arraycopy(src,src起始,dest,dest起始,复制个数)原生高效复制7. 数组扩容原有数组长度固定扩容逻辑创建更长新数组将原数组元素全部复制进新数组原数组引用指向新数组 快捷写法arr Arrays.copyOf(arr, arr.length * 2);8. 冒泡排序逻辑相邻元素两两比较逆序则交换每轮循环把最大值移到末尾双层循环外层控制轮次i arr.length-1内层比较j arr.length-1-i时间复杂度 O (n²)大数据量效率极低JDK 内置排序Arrays.sort()底层优化速度远快冒泡三、二维数组1. 本质二维数组 一维数组每个元素又是一维数组2. 合法定义int[][] arr new int[10][20]; //固定行列 int[][] arr new int[10][]; //仅指定外层长度内层数组后续创建 int arr[][] {{1,2},{3}};3. 错误定义int[][] arr new int[][];int[][] arr new int[][3];int[3][] arr ...左侧不能写数字长度int[][] arr new int[2][]{ {1},{2} }长度与初始化列表不能同写4. 遍历方式双层 for 循环外层遍历一维数组行内层遍历每行内部元素列for(int i0;iarr.length;i){ for(int j0;jarr[i].length;j){} }5. 经典练习随机填充二维数组指定范围数字求和、计算平均值随机填充 a-z 字符二维数组查找第一个指定字符的坐标找到直接 return 结束四、高频易错题总结1. 自增运算符变量先取值后自增变量先自增后取值int a9;aa;最终 a 仍为 9赋值时先取旧值再自增2. 位移运算a n仅返回新数值不改变原变量本身优先级低于加减a 2 1等价a 33. 数组定义歧义int[] x,y[]int[] x; //一维数组 int[] y[]; //二维数组正确判断y[0] x✔ 二维数组一行存放一维数组y[0][0] x❌ 数字不能接收数组y[0][0] x[0]✔ 数字接收数组元素五、配套编程习题考点速记水仙花数三位数每位立方和 自身阶乘递归 / 循环相乘注意 0! 1数组分区基准值小放左、大放右累加特殊数列222222…键盘控制数字与相加次数char 数组随机填充字母查找指定字符下标十进制转二进制统计 1 的个数十进制转十六进制算法实现100~200 素数判断只能被 1 和自身整除有序数组插入数字保持升序计算 x 的 n 次方统计 0-9 数字出现次数

相关新闻

Rust unsafe 的使用边界

Rust unsafe 的使用边界

Rust语言以其内存安全和线程安全的特性闻名,但为了与系统底层交互或实现高性能代码,Rust提供了unsafe关键字来突破编译器的安全检查。unsafe并非完全禁用安全机制,而是划定了一条明确的边界,开发者需在此边界内谨慎操作。本文将探…

2026/7/10 23:09:55 阅读更多 →
linux线程概念和控制

linux线程概念和控制

1.linux线程概念 1.1 线程概念和实现原理 1.1.1 线程概念在一个程序里的一个执行路线就叫做线程(thread),线程是一个进程内部的控制序列进程至少有一个执行线程线程在进程内部运行,本质是在进程地址空间运行在linux系统重,CPU看到的PCB比传统…

2026/7/10 23:09:55 阅读更多 →
【单智能体】OpenAI 研究员智能体案例讲解(附完整源码)

【单智能体】OpenAI 研究员智能体案例讲解(附完整源码)

目录 案例简介 案例目标 技术栈与核心依赖 编程语言 核心依赖库 项目配置 环境变量配置 依赖安装 requirements.txt 内容 项目结构 核心代码实现 1. 数据模型定义 2. 自定义工具:保存重要事实 3. 智能体定义 3.1 研究智能体 (Research Agent) 3.2 编辑智能体 …

2026/7/10 23:07:55 阅读更多 →

最新新闻

CPDS-analyzer安全部署指南:保护容器监控数据的3个关键点

CPDS-analyzer安全部署指南:保护容器监控数据的3个关键点

CPDS-analyzer安全部署指南:保护容器监控数据的3个关键点 【免费下载链接】cpds-analyzer Analyze exceptions for Container Problem Detect System 项目地址: https://gitcode.com/openeuler/cpds-analyzer 前往项目官网免费下载:https://ar.op…

2026/7/10 23:58:10 阅读更多 →
OCT焊中检测:激光焊接有了「实时X光眼」

OCT焊中检测:激光焊接有了「实时X光眼」

所谓OCT焊中检测,就是利用光学相干断层扫描技术,在激光焊接过程中实时测量熔池深度和匙孔状态,做到每一道焊缝都在焊接过程中完成质量判定——而不是焊完之后再抽检。 在传统的焊接质量管控中,"先焊后检"是标准流程&…

2026/7/10 23:58:10 阅读更多 →
安全部署指南:uos-dovecot-exporter 在 UOS 生产环境的最佳实践 [特殊字符]️

安全部署指南:uos-dovecot-exporter 在 UOS 生产环境的最佳实践 [特殊字符]️

安全部署指南:uos-dovecot-exporter 在 UOS 生产环境的最佳实践 🛡️ 【免费下载链接】uos-dovecot-exporter A Prometheus exporter for dovecot. 项目地址: https://gitcode.com/openeuler/uos-dovecot-exporter 前往项目官网免费下载&#xff…

2026/7/10 23:58:10 阅读更多 →
摸鱼神器!一款终端就能玩的公平斗地主!

摸鱼神器!一款终端就能玩的公平斗地主!

大家好,我是 Java陈序员。 上班久坐犯困,想摸鱼放松又怕太显眼?网页游戏弹窗多,客户端游戏目标又太大了,时时得担心老板巡岗。 今天,给大家分享一款在终端就能玩的斗地主游戏,敲行命令就能启动&…

2026/7/10 23:56:10 阅读更多 →
换皮包不好过了:苹果一年拒掉37.1万复制/垃圾提交

换皮包不好过了:苹果一年拒掉37.1万复制/垃圾提交

最近做 iOS 上架的团队,应该能明显感觉到:苹果不是只看“有没有违规词”,而是在看这个 App 到底像不像一个新产品。上月,苹果在 App Store 防欺诈通报里给了一组数据:2025年,App Review 一共评估超过910万次…

2026/7/10 23:56:10 阅读更多 →
PilotGo-plugin-ELK插件开发入门:10个步骤创建你的第一个插件

PilotGo-plugin-ELK插件开发入门:10个步骤创建你的第一个插件

PilotGo-plugin-ELK插件开发入门:10个步骤创建你的第一个插件 【免费下载链接】PilotGo-plugin-ELK ELK plugin for PilotGo. 项目地址: https://gitcode.com/openeuler/PilotGo-plugin-ELK 前往项目官网免费下载:https://ar.openeuler.org/ar/ …

2026/7/10 23:54:09 阅读更多 →

日新闻

STM32与LTC1864高精度ADC的SPI通信实现

STM32与LTC1864高精度ADC的SPI通信实现

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,模拟信号与数字系统的无缝集成一直是工程师面临的关键挑战。LTC1864作为一款16位高精度ADC转换器,配合STM32F101ZG这类主流微控制器,能够构建高性能的模拟信号采集系统。这种组合特别适合…

2026/7/10 0:03:07 阅读更多 →
猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案

猫抓插件:浏览器资源嗅探与视频下载的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为网页视频无法下载而烦恼吗&am…

2026/7/10 0:05:09 阅读更多 →
直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

直流有刷电机驱动方案:TC78H653FTG与MKV46F256VLH16应用

1. 直流有刷电机驱动方案概述在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H653FTG作为东芝推出的新一代H桥驱动器,与MKV46F256VLH16微控制器配合使用&#xff0c…

2026/7/10 0:05:09 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/10 19:03:29 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻