标题:[求助]请问为什么我的 x,y的值没变
只看楼主
WHW1984
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-12-30
得分:0 
你仅仅把x,y的值传进去,不是把对象传进去,当然不会变了.
2005-12-30 22:49
dreameds
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2005-12-19
得分:0 

其实我本来做的就是交换,但是没完成交换,不知道是哪里出问题了
public class Jiaohuan {

Jiaohuan(int x,int y)
{
int z=x;
x=y;
y=z;
}

public static void main(String[] args) {
int m=1,n=2;
Jiaohuan l=new Jiaohuan(m,n);
System.out.println(m+" "+n);
}
}


2006-01-01 21:50
bagger
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:33
帖 子:891
专家分:0
注 册:2005-8-16
得分:0 
public class Jiaohuan {

Jiaohuan(int x,int y)
{
int z=x;
x=y;
y=z;
System.out.println(x+" "+y);
}

public static void main(String[] args) {
int m=1,n=2;
Jiaohuan l=new Jiaohuan(m,n);
System.out.println(m+" "+n);
}
}


你的打印语句是打印的MAIN里的M,N;这两个值根本就没有改变!
M,N在构造函数里改变,可是它没有返回任何东西,所以外面的打印是不会有什么改变的!
上面的程序结果为:2 1
1 2


希望你能根据程序理解!



【三元毕业设计论文】
三元论文真的只有三元钱
客服QQ:742670649
http://shop35094218./
2006-01-02 10:50
bmlvy2005
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-29
得分:0 

//file name is Change.java;
//change the x,y;
//2006.1.3;
class Change
{
public static void main(String args[])
{
Change c = new Change();
c.swap(2,6);
}
public void swap(int i,int j)
{
int temp;
temp = i;
i = j;
j = temp;
System.out.println("i= "+i+","+"j= "+j);
}
}

2006-01-03 16:51
liufeitc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-3-4
得分:0 

public class Test{
static int[] swap(int x,int y){
int temp =x;
x = y;
y = temp;
int[] swap=new int[2];
swap[0]=x;
swap[1]=y;
return swap;

}

public static void main(String[] args) {
int m=2,n=1;
int[] swap1=Test.swap(m,n);
m=swap1[0];
n=swap1[1];
System.out.println(m+" "+n);

}
}
这样才能影响到实参。

2006-01-04 13:13
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
得分:0 
何谓虚参,什么才叫实参啊??

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-04 13:18
cll19820814
Rank: 2
等 级:新手上路
威 望:3
帖 子:328
专家分:0
注 册:2005-11-30
得分:0 
实参可以向虚参传递值;
虚参不能向实参传递值。这么说对不对啊???

懵懵懂懂,看千遍而不会;设身处地,试一下就成功!
2006-01-04 14:10
Jhyvin
Rank: 2
等 级:新手上路
威 望:4
帖 子:81
专家分:0
注 册:2005-12-29
得分:0 
以下是引用dreameds在2005-12-30 0:24:00的发言:

我都调用方法了,为什么输出还是2 1
我都郁闷死了,请人指点~
public class M1 {
void test1(int m,int n){

m=111;
n=1112;

}

public static void main(String[] args) {
int x=2,y=1;

M1 o=new M1();
o.test1(x,y);

System.out.println(x+" "+y);

}
}

我来说两句
你在main方法中定义了两个变量 x,y. 并作为实参传递给了test1方法 java参数传递方式pass by value
你又在test1方法中定义了两个变量m,n 用于接受实参传过来的值,而m,n的生命周期只是在test1方法内
改变m,n的值 不会影响到外面的任何值 你最后的打印语句打印的是main内定义的变量 所以 只能是
打印出2 1
但是通常为了避免混淆最好养成好习惯
不要把各种等级的变量 命名为相当的名字


一万年太久,只争朝夕! 从此不再乱翻书!!!
2006-01-12 12:43
aafg剑心
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-6-12
得分:0 
       就是说传递的仅仅是数值,不是地址。

世事如舟挂短篷,或移西岸或移东。 几回缺月还圆月,数阵南风又北风。 岁久人无千日好,春深花有几时红。 是非入耳君须忍,半作痴呆半作聋。
2006-01-12 19:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-40832-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.384017 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved