做外贸网站报价单,2023年新闻热点事件摘抄,软件开发工具的基础,wordpress好用插件⭐ 作者#xff1a;小胡_不糊涂 #x1f331; 作者主页#xff1a;小胡_不糊涂的个人主页 #x1f4c0; 收录专栏#xff1a;浅谈Java #x1f496; 持续更文#xff0c;关注博主少走弯路#xff0c;谢谢大家支持 #x1f496; 方法 1. 方法概念及使用1.1 什么是方法1… ⭐ 作者小胡_不糊涂 作者主页小胡_不糊涂的个人主页 收录专栏浅谈Java 持续更文关注博主少走弯路谢谢大家支持 方法 1. 方法概念及使用1.1 什么是方法1.2 方法定义1.3 方法调用的执行过程1.4 实参与形参关系1.5 没有返回值的方法 1. 方法概念及使用
1.1 什么是方法 方法就是一个代码片段。类似于 C 语言中的 “函数”。 方法存在的意义
是能够模块化的组织代码(当代码规模比较复杂的时候)。做到代码被重复使用一份代码可以在多个位置使用。让代码更好理解更简单。直接调用现有方法开发不必重复新建。
比如现在要开发一款日历在日历中经常要判断一个年份是否为闰年则有如下代码
public static void main(String[] args) {int year 1900;if((0 year % 4 0 ! year % 100) || 0 year % 400){System.out.println(year年是闰年);}else{System.out.println(year年不是闰年);}}那方法该如何来定义呢
1.2 方法定义
方法语法格式
// 方法定义
修饰符 返回值类型 方法名称([参数类型 形参 ...]){方法体代码;[return 返回值];
}返回值类型要与返回的数据类型相匹配也可能没有返回值
实例1实现一个函数检测一个年份是否为闰年
public static void main(String[] args) {int year 1900;System.out.println(isLeapYear(year));//方法的调用}//定义一个方法实现判断闰年public static boolean isLeapYear(int year){if((0 year % 4 0 ! year % 100) || 0 year % 400){return true;}else{return false;}}运行结果 实例2实现一个两个整数相加的方法
public static void main(String[] args) {System.out.println(add(2,3));}public static int add(int x, int y) {return x y;}运行结果 注
修饰符现阶段直接使用public static 固定搭配返回值类型如果方法有返回值返回值类型必须要与返回的实体类型一致如果没有返回值必须写成 void方法名字采用小驼峰命名参数列表如果方法没有参数()中什么都不写如果有参数需指定参数类型多个参数之间使用逗号隔开在java当中方法在调用前或调用后都不用方法声明可以直接使用方法体方法内部要执行的语句在java当中方法必须写在类当中在java当中方法不能嵌套定义
1.3 方法调用的执行过程
方法调用过程 调用方法 — 传递参数 — 找到方法地址 — 执行被调方法的方法体 — 被调方法结束返回 — 回到主调方法继续往下执行 注
定义方法的时候不会执行方法的代码只有调用的时候才会执行。一个方法可以被多次调用。方法的调用是需要开辟内存的方法调用结束 这块内存就销毁了。
实例1 计算两个整数相加
public static void main(String[] args) {int a 10;int b 20;System.out.println(第一次调用方法之前);int ret add(a,b);System.out.println(第一次调用方法之后);System.out.println(ret ret);System.out.println(第二次调用方法之前);ret add(30,50);System.out.println(第二次调用方法之后);System.out.println(ret ret);}public static int add(int x, int y) {System.out.println(调用方法中 x x y y);return x y;//实现两束相加}运行结果 实例2计算 1!2!…5! public static void main(String[] args) {int sum 0;for (int i 1; i 5; i) {sum fac(i);//sumsumfac(i)//第一次sum0fac(1)1//第二次sum1fac(2)12!3...}System.out.println(sum sum);}public static int fac(int n) {System.out.println(计算 n 的阶乘中n! n);int result 1;for (int i 1; i n; i) {result * i;}return result;}运行结果 1.4 实参与形参关系 方法的形参相当于数学函数中的自变量比如1 2 3 … n 的公式为 sum(n)n*(n1)/2 Java中方法的形参就相当于sum函数中的自变量n用来接收sum函数在调用时传递的值的。形参的名字可以随意取对方法都没有任何影响形参只是方法在定义时需要借助的一个变量用来保存方法在调用时传递过来的值。 例如
public static int getSum(int N){ // N是形参return (1N)*N / 2;
}getSum(10); // 10是实参,在方法调用时形参N用来保存10
getSum(100); // 100是实参在方法调用时形参N用来保存100public static int add(int a, int b){return a b;
}add(2, 3); // 2和3是实参在调用时传给形参a和b这里的 add 就好比一个加工机器将传进来的 a 和 b 转化成 ab 返回。 在Java中实参的值永远都是拷贝到形参中形参和实参本质是两个实体
实例交换两个整型变量
public static void main(String[] args) {int a 10;int b 20;swap(a, b);System.out.println(main: a a b b);}public static void swap(int x, int y) {//交换 x yint tmp x;x y;y tmp;System.out.println(swap: x x y y);}运行结果 可以看到在swap函数交换之后形参 x 和 y 的值发生了改变但是main方法中a和b还是交换之前的值a 与 b 本身并没有发生交换。
这是为什么 实参 a 和 b 是 main 方法中的两个变量其空间在 main 方法的栈(一块特殊的内存空间)中而形参x和y是swap方法中的两个变量x和y的空间在swap方法运行时的栈中。 因此实参a和b 与 形参x和y是两个没有任何关联性的变量。 在 swap 方法调用时只是将实参 a 和 b 中的值拷贝了一份传递给了形参 x 和 y 因此对形参x 和 y 操作不会对实参 a 和 b 产生任何影响。 对于基础类型来说形参相当于实参的拷贝。即 传值调用
int a 10;
int b 20;int x a;
int y b;int tmp x;
x y;
y tmp;可以看到, 对 x 和 y 的修改, 不影响 a 和 b。
解决方法 传引用类型参数
public static void main(String[] args) {
int[] arr {10, 20};
swap(arr);
System.out.println(arr[0] arr[0] arr[1] arr[1]);
}
public static void swap(int[] arr) {
int tmp arr[0];
arr[0] arr[1];
arr[1] tmp;
}运行结果 1.5 没有返回值的方法 方法的返回值是可选的。有些时候可以没有的没有时返回值类型必须写成 void 例如
public static void main(String[] args) {
int a 10;
int b 20;
print(a, b);
}
public static void print(int x, int y) {
System.out.println(x x y y);
}运行结果