java基本数据类型传递与引用传递区别的一些思考

java基本数据类型传递与引用传递区别的一些思考

前言

最近在学习java,刚好看到这一块内容,在网上看了很多文章之后,便有了今天这篇文章。

首先,java来说,java中只存在值传递,其实并不存在引用传递,因为java中没有指针。接下来我分基本数据类型作为形参引用类型(除了String类型)作为形参String类型作为形参来进行讲解

🌰

基本数据类型作为形参

1
2
3
4
5
6
7
8
9
10
11
public class a {
public static void main(String[] args) {
int a = 1;
System.out.println("调用前x的值:"+a);
change(a);
System.out.println("调用后x的值:"+a);
}
public static void change(int b) {
b = b*10;
}
}

这里应该输出:

1
2
调用前x的值:1
调用后x的值:1

change方法执行的过程如下:

  1. 将a的值复制给b
  2. b = b *10
  3. 这个方法结束后,参数变量b不再使用,被回收

image-20200614211143726

引用数据类型(除了String类型)作为形参

这里举一个数组的例子,其他引用类型(除了String类型)也是类似的

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String[] args) {
int[] arr = {1,3,5};
System.out.println(arr[0]);
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] arr) {
arr[0] = 200;
}
}

这里应该输出:

1
2
1
200

change方法执行的过程如下:

  1. 将变量arr的地址复制给形参arr,变量arr和形参arr指向的是同一个地址
  2. 形参arr修改索引0的值
  3. 这个方法结束后,形参arr不再使用,被释放。

image-20200615211123172

String类型作为形参

参考

  1. java基本数据类型传递与引用传递区别详解
  2. 你真的理解Java的按引用传递吗?
  3. java函数(方法)中的值传递和引用传递问题
  4. java中的值传递和引用传递问题

本文标题:java基本数据类型传递与引用传递区别的一些思考

文章作者:xianyu123

发布时间:2020年06月09日 - 11:01

最后更新:2020年06月15日 - 21:11

原始链接:http://0clickjacking0.github.io/2020/06/09/java基本数据类型传递与引用传递区别的一些思考/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------    本文结束  感谢您的阅读    -------------