加载中...
加载中...
函数的形参改变,能改变实际参数吗?

函数的形参改变,能改变实际参数吗? 原创

函数的形参改变,能改变实际参数吗?

 1、数组

函数参数传递数组。====改变形参数组能够改变实参的值。
数组是放在堆中的,本例中arr是数组的引用(值是:数组的首地址),将这个地址赋值给形参后,实参arr和形参arr都是指向堆中的数组的首地址,所以改变形参数组,也就改变了实参的。
数组作为参数是一个特殊的,因为他可以通过首地址,数组名来改变数组中的值。

 2、字符串
String str="leixingke";

在编译期,JVM会去常量池来查找是否存在“leixingke”,如果不存在,就在常量池中开辟一个空间来存储“leixingke”;
如果存在,就不用新开辟空间。然后在栈内存中开辟一个名字为str的空间,来存储“leixingke”在常量池中的地址值指向。
本例实参str是指向常量池中的字符串“leixingke”,将实参str的值赋值给形参str(实际上就是将字符串“leixingke”地址赋值一份给形参str),改变形参str的指向,指向“leixing”,改变形参str和实参str没关系。


3、其他类型
基本数据类型: 一共有8种,可以在栈中直接分配内存;
引用数据类型: 除了基本数据类型以外其他所有的数据类型,比如 Integer 、String、用户自定义的类等他们是对象的引用在栈中,对象实际存放在堆中.

demo

复制收展Javapackage com.algorithm.demo;

import java.util.Arrays;

/**
* @Desc -累行客
*
* 函数的形参改变,能改变实际参数吗?
* java中的方法可以传递参数,参数的传递方法就是值传递。
* 值传递就是当参数是基本类型时,传递参数的值,比如传递i=10,真实传参时,把10赋值给了形参。
* 当参数是对象时,传递的是对象的值,也就是对象的首地址。就是把对象的地址赋值给形参。
*
* 1、数组
* 函数参数传递数组。====改变形参数组能够改变实参的值。
* 数组是放在堆中的,本例中arr是数组的引用(值是:数组的首地址),将这个地址赋值给形参后,实参arr和形参arr都是指向堆中的数组的首地址,所以改变形参数组,也就改变了实参的。
* 数组作为参数是一个特殊的,因为他可以通过首地址,数组名来改变数组中的值。
*
* 2、字符串
* String str="leixingke";
* 在编译期,JVM会去常量池来查找是否存在“leixingke”,如果不存在,就在常量池中开辟一个空间来存储“leixingke”;
* 如果存在,就不用新开辟空间。然后在栈内存中开辟一个名字为str的空间,来存储“leixingke”在常量池中的地址值指向。
* 本例实参str是指向常量池中的字符串“leixingke”,将实参str的值赋值给形参str(实际上就是将字符串“leixingke”地址赋值一份给形参str),改变形参str的指向,指向“leixing”,改变形参str和实参str没关系。
*
* 3、基本数据类型和引用数据类型
* 基本数据类型: 一共有8种,可以在栈中直接分配内存;
* 引用数据类型: 除了基本数据类型以外其他所有的数据类型,比如 Integer 、String、用户自定义的类等他们是对象的引用在栈中,对象实际存放在堆中.
*
* a是基本类型,值就直接保存在变量中。而str是引用类型,变量中保存的只是实际对象的地址。
* @Author luolei
* @Web http://www.leixingke.com/
* @Date 2020/11/04 17:35
*/
public class ArrayParamTest {

public static void main(String[] args) {
String str="leixingke";
int a=6;
Integer ai=6;
char[] arr={'a','b','c'};
updateParam(str, a, ai, arr);
System.out.println(str);
System.out.println(a);
System.out.println(ai);
System.out.println(Arrays.toString(arr));
/**
* leixingke
* 6
* [z, b, c]
*/

}

public static void updateParam(String str, int a, Integer ai, char[] arr){
str="leixing";
a=10;
ai=11;
arr[0]='z';
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59


没有更多推荐了 [去首页]
image
文章
376
原创
293
转载
83
翻译
0
访问量
183411
喜欢
73
粉丝
5
码龄
7年
资源
3

文章目录

加载中...
0
0