本问题是从C++编程的一些常用习惯而来的,C++的函数一般都会引入一对行参,一个一个是传入的对象,另一个通过传入行参运算而返回的结果。
如:int calculate(CString src, CString dest); src是传进入的行参,运算后通过dest把结果传出去,而运算的结果是成功还是失败通过int型返回。我就想能不能在java上也实现相似的功能,我就做了:
int calculate(String src, String dest); src是传进去了,而且运算后赋值到dest去,但是函数执行完毕到主函数的时候,dest的对象还是空的,按java的原理calculate函数传进去的是对象的引用,运算结束了赋予dest的值应该也可以包存下来,但是为什么我会失败呢,是我有什么地方做错了!请前辈指点一下,希望能附上一小段的测试代码,谢谢!
如:int calculate(CString src, CString dest); src是传进入的行参,运算后通过dest把结果传出去,而运算的结果是成功还是失败通过int型返回。我就想能不能在java上也实现相似的功能,我就做了:
int calculate(String src, String dest); src是传进去了,而且运算后赋值到dest去,但是函数执行完毕到主函数的时候,dest的对象还是空的,按java的原理calculate函数传进去的是对象的引用,运算结束了赋予dest的值应该也可以包存下来,但是为什么我会失败呢,是我有什么地方做错了!请前辈指点一下,希望能附上一小段的测试代码,谢谢!
要完成楼主的功能,可以改用StringBuffer就可以了
public static void main(String[] args) {
StringBuffer sbSrc = new StringBuffer("hello");
StringBuffer sbDest = new StringBuffer();
System.out.println("before calulate:");
System.out.println(sbSrc.toString());
System.out.println(sbDest.toString());
int number = calculate(sbSrc, sbDest);
System.out.println("after calulate:");
System.out.println(sbSrc.toString());
System.out.println(sbDest.toString());
System.out.println(number);
} public static int calculate(StringBuffer src, StringBuffer dest) {
for (int i = 0; i < src.length(); i++) {
dest.append(src.charAt(i));//仅仅是为了示例而已;
}
return src.length();
}
}
public static int calculate(String src, String dest) {
String tmp = new String("result Dest");
dest = tmp;
return 0;
}
这样吗??但是这样也是不行的啊!!返回的还是一个空的对象!!
String tmp = new String("result Dest");
if(**) return tmp ;
else return null;
}