问个很小白的交换问题 才看java不久,发现java中传递对象是按引用传递,可是常用的类型却不是,比如说int,double不知道如何写个函数实现交换两个数的功能 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写了一个还是不对,我是想交换main中的a bclass Swap{ int i,j; Swap(int lhs, int rhs){ i = lhs; j = rhs; } public void change() { int t; t = j; j = i; i = t; } public void print() { System.out.println("i: " + i + "j: " + j); }}public class Hello { public static void main(String[] args) { int a = 10, b = 20; Swap s = new Swap(a,b); System.out.println("Before change"); s.print(); s.change(); System.out.println("After change"); s.print(); System.out.println(a + " " + b); }} 楼主写的答案只差一步就成功了,看我给写的完整的答案:package com.pplus.dao;class Swap { private int i, j; //将类更好地封装 Swap(int lhs, int rhs) { i = lhs; j = rhs; } public Swap change() { //将返回类型void改为Swap int t; t = j; j = i; i = t; return new Swap(i,j); } public void print() { System.out.println("i: " + i + " j: " + j); } public int getI() { //新加的,用来取得交换后的数 return i; } public int getJ() { //同上 return j; }}public class Hello{ public static void main(String[] args) { int a = 10, b = 20; Swap s = new Swap(a, b); System.out.println("Before change"); s.print(); Swap newS=s.change(); System.out.println("After change"); s.print(); a=newS.getI(); //修改 b=newS.getJ(); //修改 System.out.println(a + " " + b); }} ps: Java的做事方法与传统的语言有点不同 缺少了指针,让象C里面那种用指针完成的操作不可能实现了。JAVA里面的函数只可能是输入/输出或者输入/处理的模式。 有点像c#里面的get和set块来做属性~~ 但关键是这种交换似乎并不是把i和j内存中的的内容交换了 而仅仅是又为i,j分配了一块内存吧Swap newS=s.change();a=newS.getI(); //修改b=newS.getJ(); //修改有什么办法可以直接调换内存中的内容呢?还是我理解的不到位? 图片的拖动受范围限制,如何解决 帮我解释一下这个回声程序,谢谢! 怎么保存对数据库的修改 js如何向lable控件中写值 大家讨论一下为什么许多类都要重写equals()方法呢? 高手来帮忙!!! PreparedStatement 实现sql的批处理? 用Jfilechooser打开文件夹时,能默认吗?? 用String类型表示的日期 怎样转换成日期 或者整型 ?? 谁用java开发socket通讯程序?100分相赠: 极简单问题:安装了jdk1.2.1后该怎么配置系统启动文件???? 如何实现两个程序同时监听一个端口? 如何在JAVA中实现将DBF转换成SQL SERSVER表
int i,j;
Swap(int lhs, int rhs){
i = lhs;
j = rhs;
}
public void change()
{
int t;
t = j;
j = i;
i = t;
}
public void print()
{
System.out.println("i: " + i + "j: " + j);
}
}public class Hello {
public static void main(String[] args)
{
int a = 10, b = 20;
Swap s = new Swap(a,b);
System.out.println("Before change");
s.print();
s.change();
System.out.println("After change");
s.print();
System.out.println(a + " " + b);
}
}
package com.pplus.dao;class Swap {
private int i, j; //将类更好地封装 Swap(int lhs, int rhs) {
i = lhs;
j = rhs;
} public Swap change() { //将返回类型void改为Swap
int t;
t = j;
j = i;
i = t;
return new Swap(i,j);
} public void print() {
System.out.println("i: " + i + " j: " + j);
}
public int getI() { //新加的,用来取得交换后的数
return i;
}
public int getJ() { //同上
return j;
}
}public class Hello{
public static void main(String[] args) {
int a = 10, b = 20;
Swap s = new Swap(a, b);
System.out.println("Before change");
s.print();
Swap newS=s.change();
System.out.println("After change");
s.print();
a=newS.getI(); //修改
b=newS.getJ(); //修改
System.out.println(a + " " + b);
}
}
JAVA里面的函数只可能是输入/输出或者输入/处理的模式。
Swap newS=s.change();
a=newS.getI(); //修改
b=newS.getJ(); //修改
有什么办法可以直接调换内存中的内容呢?
还是我理解的不到位?