Java 方法调用的内存图
1. 方法的调用流程-内存图解
-
方法没有被调用的时候,在方法区中的字节码文件中存放
-
方法被调用的时候,需要进入到栈内存中进行运行
总结
- 方法的运行区域在哪里?
- 栈内存
2.方法的参数传递机制
-
基本类型的参数传递机制
- Java的基本类型参数传递机制:值传递
- 在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递
- 总结
- 1.形参和实参各指什么?
- 形参:以方法为例,就是方法定义时的变量。
- 实参:在方法内部定义的变量
- 2.java的参数传递机制是什么样的?
- 值传递,传输的是实参存储的值。
- Java的基本类型参数传递机制:值传递
-
引用类型的参数传递机制
- Java的引用类型参数传递机制:地址传递
-
总结
- 1.基本类型和引用类型的参数在传递的时候有什么不同?
- 都是值传递
- 基本类型的参数传输存储的数据值
- 引用类型的参数传输存储的地址值
- 1.基本类型和引用类型的参数在传递的时候有什么不同?
3. 方法的参数传递案例
-
打印数组内容
-
/* * 案例:打印数组内容 * */ public class PrintArray { public static void main(String[] args) { int[] array = new int[]{13, 342, 24125, 13524}; //调用方法,打印数组内容 printArray(array); } //定义打印数组内容方法 public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { if (i == array.length - 1) { System.out.println(array[i]); } else { System.out.print(array[i] + ","); } } } }
-
-
从数组中查询元素的索引返回
-
/* * 案例:获取数组索引 * */ import java.util.Scanner; public class GetArrayIndex { public static void main(String[] args) { //创建数组 int[] array = new int[]{1433, 2325, 53543, 123212, 11}; //创建键盘扫描器对象 Scanner sc = new Scanner(System.in); //输出输入提示 System.out.println("请输入你要判断的数值:"); int num = sc.nextInt(); //调用方法,获取索引 int index = getIndex(array, num); //输出获取的索引 System.out.println("该数值对应的索引为:" + index); } //定义方法获取数组索引 public static int getIndex(int[] array, int num){ int index = 0; for (int i = 0; i < array.length; i++) { if(array[i] == num){ index = i; break; } } return index; } }
-
-
比较两个数组内容是否相等
-
/* * 案例:判断两个数组是否相等 * */ public class IfEqualsArray { public static void main(String[] args) { //定义两个数组 int[] array1 = new int[]{1, 12, 3, 368, 889}; int[] array2 = new int[]{1, 12, 3, 368, 889}; //调用方法判断两个数组是否相等 boolean flag = ifEqualsArray( array1, array2); //输出是否相等 if(flag){ System.out.println("这两个数组相等"); }else{ System.out.println("这两个数组不相等"); } } //定义方法,判断数组是否相等 public static boolean ifEqualsArray(int[] array1, int[] array2){ //定义两个数组是否相等标识 boolean flag = true; for (int i = 0; i < array1.length; i++) { if(array1[i] != array2[i]){ flag = false; } } return flag; } }
-