新闻详情

新闻详情

首页 / 资讯中心 / 详情

6. Java 方法

发布时间:2026/9/3 8:41:32来源:尧图网络
6. Java 方法
方法的定义方法是一段封装特定功能的、可重复调用的代码块。语法格式修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ...) { 方法体 return 返回值; }各组成部分说明组成部分说明修饰符控制访问权限和调用方式如public static返回值类型方法返回结果的数据类型无返回值用void方法名小驼峰命名见名知意参数列表形式参数形参多个用逗号分隔无参数则留空方法体实现功能的具体代码return结束方法执行并返回结果void方法可省略或用return;提前退出示例public static int getMax(int num1, int num2) { if (num1 num2) { return num1; } else { return num2; } } int max getMax(10, 20); // max 20方法定义后不会自动执行必须通过方法名(实参)显式调用。方法的分类按是否有参数和是否有返回值方法分为四类分类声明示例调用方式无参无返回值public static void printHello()printHello();无参有返回值public static String getGreeting()String s getGreeting();有参无返回值public static void printInfo(String name)printInfo(Tom);有参有返回值public static int add(int a, int b)int sum add(3, 5);形参和实参形参方法定义时括号中的变量是占位符实参调用方法时传入的具体值要求实参的类型、数量、顺序必须与形参一致否则编译报错。public static int add(int num1, int num2) { // num1、num2 是形参 return num1 num2; } add(10, 20); // 10、20 是实参 add(a, 3); // 实参可以是变量 add(2 3, a * 2); // 实参可以是表达式方法重载规则同一个类中方法名相同、参数列表不同构成方法重载。判断条件说明方法名必须相同参数个数不同即构成重载参数类型不同即构成重载参数顺序不同即构成重载如(int, double)与(double, int)与返回值类型无关与参数名无关。以下写法不构成重载会编译报错// 编译错误仅返回值类型不同 public static int add(int a, int b) { return a b; } public static double add(int a, int b) { return a b; } // 编译错误仅参数名不同 public static int add(int a, int b) { return a b; } public static int add(int x, int y) { return x y; }原因add(1, 2)调用时编译器无法根据返回值判断目标方法。重载匹配顺序编译器按以下优先级匹配重载方法精确类型匹配自动类型提升byte→short→int→long→float→double自动装箱/拆箱可变参数优先级最低public static void test(long a) { System.out.println(long); } public static void test(double a) { System.out.println(double); } test(10); // 输出 longint → long 比 int → double 更近重载示例public class OverloadDemo { public static int add(int a, int b) { return a b; } public static double add(double a, double b) { // 参数类型不同 return a b; } public static int add(int a, int b, int c) { // 参数个数不同 return a b c; } public static double add(int a, double b) { // 参数顺序不同 return a b; } }值传递Java 只有一种参数传递方式值传递。实参将自身的值复制一份传给形参方法内对形参的修改不影响实参。值的含义取决于实参类型实参类型传递的值方法内修改的影响基本类型数据值本身不影响实参引用类型堆内存地址的副本修改地址本身不影响实参修改地址指向的对象内容会影响原对象基本类型public static void change(int x) { x 100; // 修改的是副本 } int a 10; change(a); System.out.println(a); // 10不受影响引用类型修改对象内容public static void changeContent(int[] arr) { arr[0] 100; // arr 与实参指向同一对象 } int[] a {1, 2}; changeContent(a); System.out.println(a[0]); // 100原数组内容被修改引用类型修改引用本身public static void changeRef(int[] arr) { arr new int[]{3, 4}; // arr 指向新对象不影响实参 } int[] a {1, 2}; changeRef(a); System.out.println(a[0]); // 1原数组未受影响方法调用内存模型JVM 内存分区内存区域作用栈Stack每个线程独享存储方法调用栈帧局部变量、形参、返回地址。方法调用入栈执行完毕出栈堆Heap所有线程共享存储对象实例和数组。栈中的引用变量存储的是堆地址方法调用流程public static int add(int x, int y) { int result x y; return result; } public static void main(String[] args) { int a 10; int b 20; int sum add(a, b); }执行步骤main入栈栈帧中存储a10、b20调用add(a, b)a10、b20的值复制给形参x、yadd栈帧入栈计算result30add出栈return 30将结果传给main的sumadd栈帧弹出main出栈程序结束递归方法调用自身的写法须满足两个条件有递归出口终止条件每次递归调用问题规模缩小public static int factorial(int n) { if (n 1) return 1; // 递归出口 return n * factorial(n - 1); // 问题规模缩小 }递归层级过深会导致栈帧无限堆积抛出StackOverflowError。基本类型与引用类型对比维度基本类型8种引用类型存储内容数据值本身堆中对象的地址内存位置栈方法栈帧引用在栈对象在堆默认值对应类型的零值int为 0boolean为falsenull赋值/传参复制值互不影响复制地址修改内容相互影响是否可为null否是Java 的 8 种基本类型分类类型占用取值范围整数byte1B-128 ~ 127short2B-32768 ~ 32767int4B-2³¹ ~ 2³¹-1long8B-2⁶³ ~ 2⁶³-1浮点float4B精度 6~7 位double8B精度 15~16 位字符char2B0 ~ 65535布尔booleanJVM 实现相关true/false注意事项方法不能嵌套定义Java 不允许在一个方法体内定义另一个方法return执行后方法立即结束其后代码不会执行编译可通过但不可达声明了非void返回值类型的方法所有执行路径都必须有return语句调用方法时实参的类型、数量、顺序必须与形参一致引用类型变量值为null时调用方法或访问属性会抛出NullPointerException
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Python机器学习入门:从线性模型到神经网络实战全解析 2026/9/3 9:35:42

Python机器学习入门:从线性模型到神经网络实战全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
南京大学操作系统实验源码解析:MiniOS教学内核全栈实践 2026/9/3 9:35:42

南京大学操作系统实验源码解析:MiniOS教学内核全栈实践

简介:本资源是南京大学操作系统课程配套实验的完整实践包,面向计算机专业本科生及系统编程初学者,聚焦进程管理、内存调度、文件系统与I/O控制等核心原理的代码级实现与验证。压缩包共250个文件,以87个C源码(含syscall…

阅读更多 →
k6 性能测试上手指南:从零开始跑通你的第一次负载测试 2026/9/3 9:35:42

k6 性能测试上手指南:从零开始跑通你的第一次负载测试

k6 性能测试上手指南:从零开始跑通你的第一次负载测试 【免费下载链接】k6 A modern load testing tool, using Go and JavaScript 项目地址: https://gitcode.com/GitHub_Trending/k6/k6 k6 是一款用 Go 编写、以 JavaScript 脚本驱动的现代性能测试工具。它…

阅读更多 →
Czkawka 归档重复扫描:压缩包里的重复文件怎么揪出来 2026/9/3 9:35:42

Czkawka 归档重复扫描:压缩包里的重复文件怎么揪出来

Czkawka 归档重复扫描:压缩包里的重复文件怎么揪出来 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 清理下载文件夹时,你很…

阅读更多 →
不再靠截图存档:WeChatMsg 3 步导出微信聊天记录,永久留在你的硬盘 2026/9/3 9:35:42

不再靠截图存档:WeChatMsg 3 步导出微信聊天记录,永久留在你的硬盘

不再靠截图存档:WeChatMsg 3 步导出微信聊天记录,永久留在你的硬盘 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/G…

阅读更多 →
FL Studio FLEX合成器第三方音源扩展包安装与采样路径修复指南 2026/9/3 9:32:41

FL Studio FLEX合成器第三方音源扩展包安装与采样路径修复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞