小问题

javagodness 2005-02-04 07:30:36
class Ex1
{
public static void main(){

int x=3;
change(x);
System.out.println(x);
}
public static void change(x){
x=3;
}

}




我这里有几个问题需要问大家,我刚学java
第一个问题:形参和实参有什么区别,举例说明一下吧。
第二个问题:人家说不返回的时候就要使用void但是上面的例子中change方法不是返回一个x=3吗
为什么还要加上void呢
第三个问题:为什么答案是5而不是3呢?
...全文
105 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwodgirl 2005-02-05
  • 打赏
  • 举报
回复
在java中没有指针,要用对象的引用在函数中的传递才可以达到无返回值时对数值的改变

我也是刚好学到这,不过这里的值传递就学C语言的经验而言是行不通的。

如果定义一个类,在类中有这么一个方法,也许可以改变变量的值,但形参和实形同名的话,需决定是否用this.来标明是哪个参数才行。
NobodyIAm 2005-02-04
  • 打赏
  • 举报
回复
呵呵,很容易搞但也很好的问题,在C里面也是这样的好像
Coolingverse 2005-02-04
  • 打赏
  • 举报
回复
第一个问题:
int x = 5;
public void change(int a){
System.out.println(a);
}
这里的x是一个实参,而a是一个形参.
实参你可以理解成是一个发送者,就像x是被发送给了change方法一个
形参你可以理解成是一个接收者,就像a是接一个发送过来的值.

第二个问题:
你的理解错误了,所谓返回其实是一个指方法所代表的值,如下
public string a(){
return "abc";
}
这才叫做返回,你可以如下使用这个返回值
string text;
text = a();

第三个问题:
这是因为在java里基本数据类型的传递方式是按值传递的.
如你写的程序一样,外部的x变量从来就没有改变过的.而你改变的只是在change函数里的x变量.
而且在你调用完change方法后,在基方法中的x的生命周期也就结束了,所以在change外的x从来就没有改变过!
zhouqi724 2005-02-04
  • 打赏
  • 举报
回复
java语言总是使用传值调用
要区别传引用调用
apollo333 2005-02-04
  • 打赏
  • 举报
回复
第2个问题,没有返回。只是把在方法CHANGE里的X 附值。如果有返回,用RETURN的。

结果是5,因为在JAVA里,基本类型,int,double,char什么的 都是传值的。就是
在你的MAIN函数里运行的 change(x);这个x 是5,这个x 把值给了
public static void change(int x)这里的x,只是值,这两个X除了值相同以外,没有任何关系。
所以你把x= 3;改了。不影响MAIN函数里的X。
javagodness 2005-02-04
  • 打赏
  • 举报
回复
现在我告诉大家完整的
class Ex1
{
public static void main(String args[]){
int x=5;
change(x);
System.out.println(x);
}
public static void change(int x){
x=3;
}

}
dogcai 2005-02-04
  • 打赏
  • 举报
回复
我不知道楼主有没有亲自去运行这个程序。这个程序肯定是编译不能够通过的。
public static void main(){
这一行是不对的,至少少了String args[]
还有public static void change(x){
这一行中应该是change(int X)

修改后的程序是:
class Ex1
{
public static void main(String args[]){
int x=3;
change(x);
System.out.println(x);
}
public static void change(int x){
x=5;
}

}

不过我在你的原来的程序中没有发现5。int类型的参数是行参。
javagodness 2005-02-04
  • 打赏
  • 举报
回复
对不起,我写错了。
第四行中的是int x=5
zealVampire 2005-02-04
  • 打赏
  • 举报
回复
答案等于5??

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧