A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

是不是引用数据类型就是形参,基本数据类型就是实参?

19 个回复

倒序浏览
以前我一直这样认为
int a=10;              这里是实参
int b=20;
meithod(a,b)         这里是形参
public static int method(int a,int b){     这里是形参

   return a+b;
}
昨天别人跟我说   引用数据类型就是形参,基本数据类型就是实参
有点懵了  求大神解释
回复 使用道具 举报
形式参数本身是局部变量,但其特殊的是他只有被使用的时候才需要进行初始化
回复 使用道具 举报
我的理解不是这样的,对象也可以作为一个实参传递啊
我觉着形式参数就是告诉我们这里要传递一个什么类型的东西,而实际参数就是我们传进来的东西
回复 使用道具 举报
qq632739657 发表于 2016-7-31 14:05
我的理解不是这样的,对象也可以作为一个实参传递啊
我觉着形式参数就是告诉我们这里要传递一个什么类型的 ...

这个好像更要说服力
回复 使用道具 举报
66666666666666666
回复 使用道具 举报
方法的调用是实参,方法的实现是形参
回复 使用道具 举报
顶一个
回复 使用道具 举报
花陌相惜 发表于 2016-7-31 12:11
以前我一直这样认为
int a=10;              这里是实参
int b=20;

meithod(a,b) 这里应该是实参吧,代表你把上边的a,b两个变量传入这个方法,并调用这个方法。
然后下边那行具体的方法名里的代表形式参数,即在你这个方法内他们是有效的,如果把这个方法里边的a和b换成其他比如c和d也是可以的。
回复 使用道具 举报
附了值的是实际参数,没赋值的是形式参数,我是这么理解的
回复 使用道具 举报
楼主说的那句:  引用数据类型就是形参,基本数据类型就是实参。 我个人对于这句话的理解是:有基本数据类型赋值的是实参,没有基本数据类型的,引用其他的是形参,我学了几天了,个人理解是这样,不知道是不是完全对
回复 使用道具 举报
花陌相惜 发表于 2016-7-31 14:31
这个好像更要说服力

能自己理解就好,你也是学安卓的么
回复 使用道具 举报
被调用的是形参  直接定义的是实参
回复 使用道具 举报
形参和实参在调用方法的时候才会产生的概念,一个方法如果有参数列表,那么列表中的变量就是形参,实际传进去的值是实参。
引用类型的变量传进方法的是地址,
基本类型的传进去的是数值。所以说引用变量传到方法中时原先的值可能会被改变,而基本类型的变量,方法消失了,变量也就消失了。
回复 使用道具 举报
- -、什么跟什么。。。
在定义方法时上面的就是形参,如 public void xxx(int a,int b),这里面的int a 和int b就是形式参数,相当于调用这个方法时要传进去的参数的模板;
在调用方法时的就是实参,如 xxx(a,b),就是传递给方法的具体参数。
回复 使用道具 举报
Kaweh. 发表于 2016-7-31 22:47
形参和实参在调用方法的时候才会产生的概念,一个方法如果有参数列表,那么列表中的变量就是形参,实际传进 ...

楼上正解哦
回复 使用道具 举报
13411939415 发表于 2016-7-31 23:35
- -、什么跟什么。。。
在定义方法时上面的就是形参,如 public void xxx(int a,int b),这里面的int a 和in ...

为你点个赞
回复 使用道具 举报
13411939415 发表于 2016-7-31 23:35
- -、什么跟什么。。。
在定义方法时上面的就是形参,如 public void xxx(int a,int b),这里面的int a 和in ...

嗯嗯  懂了 赞一个
回复 使用道具 举报
Kaweh. 发表于 2016-7-31 22:47
形参和实参在调用方法的时候才会产生的概念,一个方法如果有参数列表,那么列表中的变量就是形参,实际传进 ...

嗯嗯 那天的API考试第三题 String也是属于引用数据类型 但是值没有变
public static void main(String[] args){
                String s1 = “abc”;
                String s2 = “xyz”;
show(s1,s2);
System.out.println(s1+”-----”+s2);
}
static void show(String s1,String s2){
         s1 = s2+s1+”Q”;  //show方法中的s1= “xyzabcQ”但是main函数中s1没有变化.
    s2 = “W”+s1;     //原理同上.
}                                    答案选A
a)abc-----xyz
b)xyzabcQ-----xyzWabc
c)xyzabcQ---- xyzabcQWabc
d)xyzQ----Wabc
回复 使用道具 举报
花陌相惜 发表于 2016-8-1 21:45
嗯嗯 那天的API考试第三题 String也是属于引用数据类型 但是值没有变
public static void main(String[]  ...

这个我也可以给你解释
因为String类型数据创建后是不能改变的,无法通过类似set方法什么的来修改它的属性值。
把String类型的s1当做参数传给方法的时候,由方法里的形式参数s1接受它的地址值,此时形式参数和实际参数指向同一个对象,当形式参数s1的值发生改变时,实际是形式参数s1指向了新的对象,与原本的实际参数s1之间就没有了联系,因此方法里面的s1改变不会使方法外的s1发生改变
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马