黑马程序员技术交流社区
标题:
让人头疼的Java中参数的传递问题,同学们有福利了!!!
[打印本页]
作者:
yuzhouyichen
时间:
2015-10-5 15:28
标题:
让人头疼的Java中参数的传递问题,同学们有福利了!!!
1:Java中的参数传递问题。(理解内存图)
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变直接影响实际参数。
理解:归根结底 是因为 基本类型是存在于栈内存中, 某个方法即使是改变了自己的栈内存的这个基本类型
那么等他调用结束了之后 方法本身就会消失 那么不影响原来的main方法中的值
而引用类型就不一样了 因为引用类型是存在于堆内存中 我们是通过栈内存里面变量所存储的引用类型的
地址值来改变引用类型的,在某个方法内通过地址值改变了堆内存中的引用类型的话 即使是这个方法消失了
堆内存中的引用类型已经改变了 所以说形式参数的改变会影响实际参数
public static void main(String[] args)
{
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);//a:10,b:20
change(a,b);
System.out.println("a:"+a+",b:"+b);//a:10,b:20
int[] arr = {1,2,3,4,5};
change(arr);
//{1,4,3,8,5}
System.out.println(arr[1]);//4
}
public static void change(int a,int b)
{
System.out.println("a:"+a+",b:"+b);//a:10,b:20
a = b; //a=20
b = a + b; //b=40
System.out.println("a:"+a+",b:"+b);//a:20,b:40
//return;
}
public static void change(int[] arr) //{1,2,3,4,5} -- {1,4,3,8,5}
{
for(int x=0; x<arr.length; x++)
{
//如何元素的值是偶数,那么,就把值变为以前的2倍。
if(arr[x]%2==0)
{
arr[x]*=2;
}
}
}
复制代码
作者:
刘小小五
时间:
2015-10-5 23:01
我只是来暧个贴
作者:
nesaylo717
时间:
2015-10-5 23:39
我也;来暖一个
作者:
Rzzz
时间:
2015-10-5 23:50
还要除去 String 这个类型的特例呀 String是引用数据类型,但在当做参数传值的时候,当基本类型使用..
作者:
Rzzz
时间:
2015-10-5 23:51
一看代码就知道是在前期学习,用的是EditPuls写代码!!
作者:
outxf003
时间:
2015-10-6 00:10
专业暖贴!哈哈
作者:
syusouki
时间:
2015-10-6 01:07
不错 学习了
作者:
且听风_R0pZK
时间:
2015-10-6 07:21
感谢分享!
作者:
Synaric
时间:
2015-10-6 09:36
JAVA只有值传递,引用类型拷贝了一个地址,表现上像一个引用传递而已,本质是值传递,记住这个够了
作者:
秦时明月汉时关
时间:
2015-10-6 09:39
还行吧!简单
作者:
pan1564335
时间:
2015-10-6 20:24
这个不是很难,值传递和只传递,高司令说了都是值传递
String的话虽然是引用数据类型,但是作为参数列表传递的时候,是和基本数据类型一样的
作者:
915816106
时间:
2015-10-6 21:46
也学习了
作者:
往事如风555
时间:
2015-10-6 21:54
这个有点难
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2