java里形参是什么
展开全部
首先纠正下java2000的第一个错误说法:"java里不叫这个,而是叫传值和传对象。".引用jiabobber的话:形参就是形式上的参数啊,实参就是实际的参数啊,其实各种语言形参实参都一样的概念的吧。
jiabobber的这句话是对的,实参,形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有,也不叫传对象;
直白的讲,形参是形式上的参数,实参是实际的参数;
形参只是对实参的一种抽象类型描述,只是声明一个函数(方法)能接受什么类型的实参,而不确定接受的实参具体内容是多少;实参就是传递给函数(方法)对应形参的具体内容(值),形参的初始指(内容)由实参决定.形参在函数(方法)结束返回后就被释放了.
到这里,就又出现程序设计语言中的另一通用概念参数传递方式:传值和传址;
1.传值方式,只是将实参的值的拷贝传递给函数(方法),在方法内对形参进行操作,其对象是实参的拷贝,对实参不能造成影响.在方法结束返回后,形参被释放丢弃,实参的内容并不会改变;
2.传址方式,将实参的地址传递给函数(方法),在方法内对形参进行操作即等于对实参进行相同的操作,在方法结束返回后,形参同样被释放,实参的内容将会是对形参进行操作的结果.
这里,又要纠正java2000的一个错误:"传对象的引用,用于把一个对象的地址作为参数传过去,而不是对象本身。"
对象引用即对象在堆中的地址,记住!不是对象,是对象的地址.而且对于传址方式,在方法中交换两个形参后,实参也应该同时被交换!
对于形参是对象引用的,其传递方式还是按值传递!传的是对象引用的拷贝值,并不是对象引用的地址,所以方法能改变对象引用所指的对象的状态(因为对象引用及其拷贝都指向同一个对象),却不能将两个对象交换(因为形参是对象引用的拷贝,所以改变形参并不能改变实参的内容,即对象的地址.不明白的要跟基本类型的类比).
真是好累!写这么一堆...下次不搞了!
jiabobber的这句话是对的,实参,形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有,也不叫传对象;
直白的讲,形参是形式上的参数,实参是实际的参数;
形参只是对实参的一种抽象类型描述,只是声明一个函数(方法)能接受什么类型的实参,而不确定接受的实参具体内容是多少;实参就是传递给函数(方法)对应形参的具体内容(值),形参的初始指(内容)由实参决定.形参在函数(方法)结束返回后就被释放了.
到这里,就又出现程序设计语言中的另一通用概念参数传递方式:传值和传址;
1.传值方式,只是将实参的值的拷贝传递给函数(方法),在方法内对形参进行操作,其对象是实参的拷贝,对实参不能造成影响.在方法结束返回后,形参被释放丢弃,实参的内容并不会改变;
2.传址方式,将实参的地址传递给函数(方法),在方法内对形参进行操作即等于对实参进行相同的操作,在方法结束返回后,形参同样被释放,实参的内容将会是对形参进行操作的结果.
这里,又要纠正java2000的一个错误:"传对象的引用,用于把一个对象的地址作为参数传过去,而不是对象本身。"
对象引用即对象在堆中的地址,记住!不是对象,是对象的地址.而且对于传址方式,在方法中交换两个形参后,实参也应该同时被交换!
对于形参是对象引用的,其传递方式还是按值传递!传的是对象引用的拷贝值,并不是对象引用的地址,所以方法能改变对象引用所指的对象的状态(因为对象引用及其拷贝都指向同一个对象),却不能将两个对象交换(因为形参是对象引用的拷贝,所以改变形参并不能改变实参的内容,即对象的地址.不明白的要跟基本类型的类比).
真是好累!写这么一堆...下次不搞了!
追问
对象的引用能详细的说一下吗
展开全部
形式类型:是你在定义方法时括号里面的参数。
如:public void setName(String name){this.name = name;}
name:就是形式参数
如:public void setName(String name){this.name = name;}
name:就是形式参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public int cal(int a,int b)
{
System.out.print(a+b)
}
int cal( 3,4)
将打印出 7
以上代码中a,b为形参,不是具体的数字
3,4为实参,为实际运算的参数
{
System.out.print(a+b)
}
int cal( 3,4)
将打印出 7
以上代码中a,b为形参,不是具体的数字
3,4为实参,为实际运算的参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如:
public static void main(String vargs[]){
class A{
int methodA(int X,int Y){//此处的X 、Y就是形参,就是预先放一个形式在这里,等待传入
……
}
}
int m=10;
int n=20;
A a=new A();
a.methodA(m,n);//m,n就是实参,也可用常量,即10,20
}
要注意:简单类型是值传递,即再新复制一个值给形参,这个值的改变,不会影响传进来的那个变量的值,而只改变形参;类类型是地址传递,即将类new出来的对象的地址传递给形参,不会再new出来一个对象,所有改变会影响传进来的那个对象。
public static void main(String vargs[]){
class A{
int methodA(int X,int Y){//此处的X 、Y就是形参,就是预先放一个形式在这里,等待传入
……
}
}
int m=10;
int n=20;
A a=new A();
a.methodA(m,n);//m,n就是实参,也可用常量,即10,20
}
要注意:简单类型是值传递,即再新复制一个值给形参,这个值的改变,不会影响传进来的那个变量的值,而只改变形参;类类型是地址传递,即将类new出来的对象的地址传递给形参,不会再new出来一个对象,所有改变会影响传进来的那个对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询