
正文
Java学习笔记4(方法)
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
方法和c++中的函数类似,区别在于java的方法定义不限位置,而c++中的定义在主函数后面的函数调用前要声明:
求矩形面积方法示例:
public class MethodDemo{
public static void main(String[] args){
int area = getArea(5,6);
System.out.println("面积是:"+area);
}
public static int getArea(int w, int h){
return w * h;
}
}
输出:面积是:30
调用过程分析:
1.从main进入,开始执行程序
2.调用getArea方法,传递参数,得到返回值
3.输出
调用过程内存分析:
1.程序运行时期,必须进入内存,运行文件:编译后的class文件进入内存
2.class文件进入方法区
3.main方法进栈运行
4.getArea方法进栈运行
5.计算结果返回给调用者
6.getArea方法运行结束,出栈,释放内存资源
7.main输出后,出栈,释放内存资源,程序结束
注意事项:
1.方法不能定义在另一个方法内
2.方法名严格区分大小写
3.参数不能少传或多传,类型一致
4.return代表结束,不可以在return下面继续写,返回类型一致
方法重载:
具体的重载的概念就不介绍了,这里实现一个最简单的重载
public class MethodDemo{
public static void main(String[] args){
int sum = getSum(2,3,1);
System.out.println(sum);
}
public static int getSum(int a, int b){
System.out.println("int+int");
return a+b;
}
public static int getSum(int a, int b, int c){
System.out.println("int+int+int");
return a+b+c;
}
public static double getSum(double a, double b){
System.out.println("double+double");
return a+b;
}
}
再来一个难点:
public class MethodDemo{
public static void main(String[] args){
int[] arr = {1,2,3,4};
System.out.println(arr[2]);//
change(arr);
System.out.println(arr[2]);//
}
public static void change(int[] arr){
arr[2] = 100;
}
}
解释:
1.main方法进栈运行
2.在堆中开空间放入数组ARR并赋值
3.数组首地址传给栈中的ARR,即ARR指向存有这个数组的内存空间
4.调用change传递的参数方法实际上是内存地址,change中的ARR变量的地址和main中的ARR地址相同
5.在change方法运行结束后释放内存,但是通过地址改变的arr[2]彻底变了
通俗地理解:多个人合租房子,都拿到房屋地地址,某个人进入房子装修,以后进入的人看见的都是装修后的房子





