站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题一个比较简单但是想不通的问题,求助

一个比较简单但是想不通的问题,求助

摘要: 一个比较简单但是想不通的问题,求助


我有这样一个简单的程序。
public class J_Test
{

public static void main (String args[])
{

String[] s = {"1","2"};
J_Test j = new J_Test();
j.mb_swap(s[0],s[1]);
System.out.println(s[0]+s[1]);
}
public void mb_swap(String a, String b)
{
String t = a;
a = b;
b = t;

}

}

但是每次打出来都是12,我想要21怎么办?因为用C都是直接这样写,但不明白为什么在Java就不被转过来。用static也不行。谢谢。


这与c里的值传递是一个道理。传给函数是引用(即对象存放的地址值),而并没有将真正的参数传入


那应该怎么解决这个问题?怎么把参数传入?请举例好吗?


public static void main (String args[]) {
String[] s = {"1","2"};
J_Test j = new J_Test();
j.mb_swap(s, 0, 1);
System.out.println(s[0]+s[1]);
}

public void mb_swap(String[] d, int index1, int index2) {
String t = d[index1];
d[index1] = d[index2];
d[index2] = t;
}


谢谢楼上的,就是要把String传进去就可以了吧!
那我大概明白什么意思了。好像C里面不需要那么麻烦吧……


与C语言一样,JAVA数组名传递的是地址


谢谢各位。


主要是因为Java传值不传引用,不像C++里那么多传法。
而且Java对类的引用传递方式也不像C++里的引用传递,Java那个的实质还是传递的一个引用的值(再说明白点就是一个指针),C++传进去那个才是真正的引用。


↑返回目录
前一篇: java如何创建一个服务程序运行在后台?
后一篇: SimpleDateFormat的使用中的 问题