方法传参
-
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
-
代码实现
public class Test {
public static void main(String[] args) {
int number = 100;
System.out.println("调用change前:"+number);
change(number);
System.out.println("调用change后:"+number);
}
public static void change(int number1){
number1 = 200;
return number1;
}
}
代码解析
public static void main(String[] args) { //把main方法加载到栈内存
int number = 100; //在main方法中加载一个 int number 100;
System.out.println("调用change前:"+number); //将number的值输出
change(number); //调用change方法:把change方法加载到栈内存
public static void change(int number1){ //在chenge方法中,加载一个 int nember1 100
// number1 是形参,它的初始值是实参number给它的。实参number的初始值:100
number1 = 200; // number1的值从100 变为了200
return number1; // 将number1的值返回到main方法中,暂时main方法中没人接收
} //chenge方法结束 int number1 = 200 和change方法一起随着changg方法的结束而在栈内存中消失
System.out.println("调用change后:"+number);//再次输出number的值,这次number的值在main方法中,值为100
} //main方法结束,int number = 100 和main方法一起随着mian方法的结束在栈内存中消失
-
对于引用类型的参数,形式参数的改变,影响实际参数的值。
-
代码实现
public class Test {
public static void main(String[] args) {
int[] arr = {10,20,30};
System.out.println("调用change前:"+arr[1]);
change(arr);
System.out.println("调用change后:"+arr[1]);
}
public static void change(int[] arr1){
arr1[1] = 200;
}
}
代码分析
public static void main(String[] args) { //把main方法加载到栈内存
int[] arr = {10,20,30}; //int[] arr 出现在栈内存main方法中 {10,20,30}会出现在堆内存里面,形成2行2列的表格
//表格上方会出现地址值001
//会将地址值001 赋值给栈内存的 arr
System.out.println("调用change前:"+arr[1]);//输出arr[1]的值--->20
change(arr); //调用change方法:把change方法加载到栈内存
public static void change(int[] arr1){在chenge方法中,加载一个 int[] arr1 001
// arr1是arr 传递过来的 也是堆内存中地址值是001的数据
arr1[1] = 200; //通过arr1--->001--->索引1--->20 ===>20变成200 堆内存的数据发生改变
} //chenge方法结束 int number1 001 和change方法一起随着changg方法的结束而在栈内存中消失
System.out.println("调用change后:"+arr[1]);//再次输出arr[1]的值,堆内存的数据发生了改变 但是没有消失
} //main方法结束,int[] arr 001 和main方法一起随着mian方法的结束在栈内存中消失
基本数据类型和引用数据类型数据在传参时区别
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用
综合案例
使用带参方法实现学员信息管理
增加学员姓名
在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
package cn.bdqn.demo04;
public class Student {
/*
* 增加学员姓名 在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
*/
// 定义Student类属性
String name;
int age;
// 定义方式实现上述需求:在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功
public static boolean searchStudent(Student[] students, int startIndex,
int endIndex, String name) {
int count = 0;
for (int i = startIndex; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?