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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yan 中级黑马   /  2013-8-1 22:27  /  1633 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

例:
class Demo
{
public static void main(String[] args)
{
int [] java ={34,23,56,45};
print(java);

}
public static void print(int [] arr)
                {
                for(int i=0;i<arr.length;i++)
                        {
                        System.out.print(arr[i]+"\t");
                }
        }
}
我的问题是为什么在传入实参的时候,前面不能加参数类型呢?如 print(int [] java);
求高手帮忙

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
因为函数在调用的时候,传递的参数不必要指明参数类型,但是在定义的时候必须指明参数类型。因为没有必要再指明数据类型。
回复 使用道具 举报
本帖最后由 肥猫 于 2013-8-1 23:04 编辑

因为没必要,前面加类型那相当于声明,已经声明过一次了还要再次声明么?
比如你定义一个int a = 5;
你下面要调用赋值的时候难道还要在int a =10?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
在函数调用时,无需再传递参数的数据类型,因为在函数定义时,已经声明过数据类型,在程序执行时编译器会根据传入的参数类型不同,去调用不同的函数。
形参和实参的区别
英文名字不同:形参是parameter,实参是argument。
本质不同:形参的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。
在Javadoc或MSDN中的地位不同:Javadoc和MSDN提到一个方法有哪些参数,往往用parameter这个词。只有到程序员真正使用这个方法,才是argument。
在调试的时候,parameter就转变成argument,这时也往往不使用argument一词,而是称之为variable(变量),因为实参本质上就是一个变量,在内存中占用一块空间。
回复 使用道具 举报
因为我们已经定义了参数的类型了,在传入的时候只能传入相应类型的参数,如我们后来传入的参数类型不同要转换成相同的类型才可以传入。
回复 使用道具 举报
因为在定义的时候已经说明了参数类型,所以传入参数的时候不必再加参数类型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马