Java方法的参数传递机制

一、方法的参数传递机制

1.形参是基本数据类型

  • 传递数据值

2.实参是引用数据类型

  • 传递地址值
  • 特殊的类型: String、包装类等对象不可变性

二、String、包装类对象的不可变性

​ 一旦一个String对象在内存中创建,它将是不可改变的,所有的String类中方法并不是改变String对象自己,而是重新创建一个新的String对象。

​ 因此,如果同时new两个 值相同的String对象,那这两个对象的地址值也是不一样的。正因为String对象的不可变性,如果需要对字符串进行大量的修改、添加字符、删除字符等操作尽量不要使用String对象,因为这样会频繁的创建新的对象导致程序的执行效率下降

这时我们可以使用字符串生成器 StringBuilder 或者 StringBuffer。

演示代码如下:

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
package passvalue_code;

import java.util.Arrays;

public class Exam4 {
public static void main(String[] args) {
int i = 1;
String str = "hello";
Integer num = 200;
int[] arr = {1,2,3,4,5};
MyData my = new MyData();

change(i,str,num,arr,my);

System.out.println("i = " + i);
System.out.println("str = " + str);
System.out.println("num = " + num);
System.out.println("arr = " + Arrays.toString(arr));
System.out.println("my.a = " + my.a);
}
public static void change(int j, String s, Integer n, int[] a,MyData m){
j += 1;
s += "world";
n += 1;
a[0] += 1;
m.a += 1;
}
}
class MyData{
int a = 10;
}

//输出: 1 hello 200 2,2,3,4,5 11

感谢阅读本博客。

欢迎关注我的博客:https://li-weijian.github.io/

欢迎关注我的CSDN:https://blog.csdn.net/qq352642663

需要联系请加QQ:352642663

欢迎联系我共同交流