Java:一段容易让人迷惑的代码

题外话

wordpress升级后的写文章页面更舒服了.

正题

有时候我们会遇到很多让我们迷惑的Java代码,比如下面这段就是,可以先想下其的输出结果.


public class Test{
public static void main(String[] args) {
StringBuffer a=new StringBuffer ("A");
StringBuffer b=new StringBuffer ("B");
oper(a,b);
System.out.print(a+","+b);
}
static void oper(StringBuffer c,StringBuffer d){
c.append("B");
d=c;
}
}

其实上面的输出结果是:ABB.

因为c是实际添加了B,而d只是单纯的传入,与b没有任何关系.

java标志
image-2234

C++实现


#include
using namespace std;

void replace(int &a,int b)
{
a=20;
b+=a;
}

int main()
{
int a = 30;
int b = 70;
replace(a,b);
cout << a << "---" << b << endl; return 0; }

一个跟原来的值是有关系的,另一个跟原来的值是没有关系的.

其他的一些代码片段就懒得发了...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据