请教一个用方法交换值的问题问题

qq_42041588 2018-04-24 09:57:02
练习代码时,写了一个方法来交换两个表力量的值,发现了一个问题;
代码是这样的:
public class textOne {
void transport(int t1,int t2) {
int t;
t=t1;
t1=t2;
t2=t;
System.out.println("方法中t1的值:"+t1);
System.out.println("方法中t2的值:"+t2);
}
public static void main(String arg[]) {
int t1=3;
int t2=7;
textOne p1=new textOne();
p1.transport(t1, t2);
System.out.println("main中t1的值:"+t1);
System.out.println("main中t2的值:"+t2);
}
}
输出
方法中t1的值:7
方法中t2的值:3
main中t1的值:3
main中t2的值:7
为什么方法不能交换main中t1,t2的值;
要怎样用方法交换main中t1,t2的值?
求教各位。
...全文
699 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
李佳楠 2018-05-08
  • 打赏
  • 举报
回复
既然没能交换main中的值,显然传递的是变量的值嘛。c里用指针,java嘛我也是刚学没几天,不过传递引用是肯定行的,或者用返回值嘛,总之办法一大堆,这属于基础的基础啊,楼主应该多看下基础。
py963004909 2018-04-25
  • 打赏
  • 举报
回复
https://blog.csdn.net/whuxinxie/article/details/54895768
py963004909 2018-04-25
  • 打赏
  • 举报
回复
public static void main(String[] args){ AtomicInteger a = 1, b = 2; swap(a,b); System.out.print("a="+ a + ", b="+ b); } void swap(Integer a, Integer b){ int temp = a.get(); a.set(b.get()); b.set(temp); }
QWERT4745 2018-04-25
  • 打赏
  • 举报
回复
值传递,不是引用传递
考拉一枚 2018-04-25
  • 打赏
  • 举报
回复
实参 形参 值传递
suxiao_mo 2018-04-25
  • 打赏
  • 举报
回复
5楼的方法很好,给个赞
扛大米的L 2018-04-25
  • 打赏
  • 举报
回复
你可以多去了解下作用域相关知识. 你的t1和t2 只是方法内部的局部变量, 你这样做相当于把传进来的参数做了交换, 跟类中的属性没有关系 如果真的想替换的话 可以试试这么做 void transport(int t1,int t2) { int t; t=t1; this.t1=t2; this.t2=t; System.out.println("方法中t1的值:"+t1); System.out.println("方法中t2的值:"+t2); } this指定你要交换的变量, 是当前类的变量,而不是方法中的变量

62,615

社区成员

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

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