java中,方法参数是基本类型和引用类型的区别

方法参数是基本类型时,传递的是值。  方法参数是引用类型时,传递的是内存地址值

当参数是基本类型时,在调用方法时将值传递到方法中,运行方法,运行结束方法退出,对原本main中定义的变量没有任何操作(方法中没有return)。即:此时只跟栈有关系,方法执行完之后(方法中没有return),会弹栈。

当参数是引用类型时,比如:定义数组时,在堆内存中存储了数组的数据,返回这组数据的地址给了数组名,然后在调用方法时,传递的也是这个地址。在方法中,同样也是根据这个地址找到数组的信息,然后改变了这个数据的,所以之后main方法输出时,输出的是改变了之后的数组。即:此时跟栈和堆有关系,栈可以弹栈,堆内存不能弹出。

也就是说 ,当形式参数是基本类型时,方法传的只是值,实际上main 里的实际参数和外部方法里的形式参数是不同的两个东西,如果方法不返回值,change里不管怎么改变,与main无关。 而当形式参数是引用类型时,比如:形式参数是数组时,两个方法通过同一个地址,使用的是同一个堆内存里的数组,是同一个东西,所以外部方法里面改变了这个数组之后,main再调用也是改变之后的数组。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏十月梦想

ES6基础语法之箭头函数

ES6直接在参数中=默认值就解决,上述中只是出一个参数的默认值,多个参数下ES6的便利性毋庸置疑!

1281
来自专栏cs

python的顺序程序设计

赋值 同步赋值:变量1,变量2,....变量n=表达式1,表达式2,.....表达式n 同步赋值首先计算右边n个表达式的值,然后同时将表达式的值赋给左边的n...

4146
来自专栏前端小叙

JS中函数声明与函数表达式的异同

相同点 注:函数声明和函数表达式的相同点包括但不限于以下几点 函数是一个值,所以和其他值一样,函数也可以进行被输出、被赋值、作为参数传给其他函数等相关操作,不...

2855
来自专栏一个爱吃西瓜的程序员

Python基础学习-操作列表

一 :遍历整个列表 1:使用for循环来遍历列表: 例: ? 输出: ? 二:避免缩进错误 1:Python根据缩进来判断代码行与前一个代码行的关系。 2:...

2844
来自专栏python3

python3--元组(tuple),列表(list),字典dict,其它(for,enumerate,range)

元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组

2171
来自专栏个人分享

JAVA虚拟机类型转换学习

  Java虚拟机包括血多进行基本类型转换工作的操作码,这些执行转换工作的操作码后面没有操作数,转换的值从栈顶端获得。Java虚拟机从栈顶端弹出一个值,对它进行...

1205
来自专栏ccylovehs

JavaScript之深拷贝和浅拷贝

工作中会经常遇到操作数组、对象的情况,你肯定会将原数组、对象进行‘备份’ 当真正对其操作时发现备份的也发生改变,此时你一脸懵逼,到时是为啥,不是已经备份了么,怎...

1111
来自专栏Petrichor的专栏

python: copy库 与 list拷贝

1211
来自专栏pangguoming

理解js中的new

new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在Javascript中,我们...

3964
来自专栏阮一峰的网络日志

JavaScript 有多灵活?

JavaScript 是一种灵活的语言,表达力极强,我来举一个例子,保证让很多人大吃一惊。 本文受到了 Kyle Simpson 的文章《Iterating E...

3317

扫码关注云+社区

领取腾讯云代金券