JAVA如何理解带参数的方法呢
(1)一直不是很明白它的作用是什么,怎么去认识它理解它?(2)在调用的时候,参数原本有值了调用后值是不是会被覆盖,或者什么。...
(1)一直不是很明白它的作用是什么,怎么去认识它理解它?
(2)在调用的时候,参数原本有值了调用后值是不是会被覆盖,或者什么。 展开
(2)在调用的时候,参数原本有值了调用后值是不是会被覆盖,或者什么。 展开
4个回答
2013-06-24
展开全部
这个问题两部分来回答,也就是参数的类型是那种类型,在java里,类型分为基本类型和引用类型两种,这两种做为参数是不同的。1、因为基本类型的值是存在栈,而引用类型需存两个东西,一个是对象的引用,一个是对象,引用放在栈里,对象放在堆里;引用是堆里对象的地址。举个例子:
int t = 12;
String str ="china";
t是基本类型,栈里存的值,就是占4个字节12的补码,如果操作t=4那么t所占4个字节空间的数据就变成了4。而str是一个引用,栈里面存了"china"对象的地址,而"china"这个对象是存在堆里面的,如果操作str="java",只是把str的引用指向栈里"java"对象,而"china"还是存在栈里的,只是没有了引用而不能访问到"china",当内存不足时,才会把"china"占用的空间回收。
回到主题。
当基本类型做为参数时,如fun(t)的调用是不会把t占有空间的地址给fun方法的,而是在fun方法里在
生成一个t具体值的拷贝,也就是说fun方法里不管如何操作t的拷贝,都不会对t=12造成任何影响。但当引用类型做为参数时,传的是引用,而不会再创建一个传进来的对象,如fun(str),str指向的就
是堆"china",当对str进行操作,就会影响到china对象的内部属性,就造成了"china"对象发生了变化。
其实java里的引用,就是一个内存地址,我们通过引用就能操作这个内存地址里的数据。
如
int[] a = {4};//a[0]=4
int[] b = a;
b[0]=3;//使a[0]=3
a,b指向同一个内存地址,通过a[0],b[0]访问的是同一个地址的数据。
int t = 12;
String str ="china";
t是基本类型,栈里存的值,就是占4个字节12的补码,如果操作t=4那么t所占4个字节空间的数据就变成了4。而str是一个引用,栈里面存了"china"对象的地址,而"china"这个对象是存在堆里面的,如果操作str="java",只是把str的引用指向栈里"java"对象,而"china"还是存在栈里的,只是没有了引用而不能访问到"china",当内存不足时,才会把"china"占用的空间回收。
回到主题。
当基本类型做为参数时,如fun(t)的调用是不会把t占有空间的地址给fun方法的,而是在fun方法里在
生成一个t具体值的拷贝,也就是说fun方法里不管如何操作t的拷贝,都不会对t=12造成任何影响。但当引用类型做为参数时,传的是引用,而不会再创建一个传进来的对象,如fun(str),str指向的就
是堆"china",当对str进行操作,就会影响到china对象的内部属性,就造成了"china"对象发生了变化。
其实java里的引用,就是一个内存地址,我们通过引用就能操作这个内存地址里的数据。
如
int[] a = {4};//a[0]=4
int[] b = a;
b[0]=3;//使a[0]=3
a,b指向同一个内存地址,通过a[0],b[0]访问的是同一个地址的数据。
2013-06-23
展开全部
很好理解的,其实你可以理解为,为了让方法更具灵活性,所以才有了参数,打个比方:
一个求一段区域的和的,求和方法、就可以通过参数来指定区域,这就使得同一份代码,可以从外部更好的操作,而无需修改代码内容。
在方法与方法间传递资源,就拿简单的绘图来说,在一个小程序中,画笔资源只有一个,而这个画笔会在另一个方法中,现在有一个画圆形的方法,需要用到这只画笔,由于,方法不知道会在什么时候被调用,所以,你需要预先给它一个参数,这个参数就是画笔。
就像告诉电脑,要想画圆形,就要给我一只笔。
有了参数里的画笔,即使它只是一个参数,但是它已经可以使用了,你可以先用这只笔完成需要的工作,就像是做了一个假设,我如果有一只笔,我要这么做。
然后再调用这个方法的时候,真的给它一只笔就好了~。
一个求一段区域的和的,求和方法、就可以通过参数来指定区域,这就使得同一份代码,可以从外部更好的操作,而无需修改代码内容。
在方法与方法间传递资源,就拿简单的绘图来说,在一个小程序中,画笔资源只有一个,而这个画笔会在另一个方法中,现在有一个画圆形的方法,需要用到这只画笔,由于,方法不知道会在什么时候被调用,所以,你需要预先给它一个参数,这个参数就是画笔。
就像告诉电脑,要想画圆形,就要给我一只笔。
有了参数里的画笔,即使它只是一个参数,但是它已经可以使用了,你可以先用这只笔完成需要的工作,就像是做了一个假设,我如果有一只笔,我要这么做。
然后再调用这个方法的时候,真的给它一只笔就好了~。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数有两种形式,一种是形参,一种是实参,还有输入参数,还有输出参数。具体我可以跟你讲解一下,我的QQ:794327453
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是说 这个方法里面的参数 和 方法体里面的变量相同而且有初始值了 会不会覆盖???
会覆盖,但是你认为会这样写变量吗?
会覆盖,但是你认为会这样写变量吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询