当前位置: 技术问答>java相关
真题一条,请高手帮忙!
来源: 互联网 发布时间:2015-06-12
本文导语: public class Foo { public static void main(String args[]) { StringBuffer a=new StringBuffer("A"); StringBuffer b=new StringBuffer("B"); operate(a,b); System.out.println(a+","+b); } static void operate(StringBuffer x,StringBuffer y) { x.append(y...
public class Foo {
public static void main(String args[])
{
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
}
为什么打印出来的是AB,B而不是AB,AB??
public static void main(String args[])
{
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
}
为什么打印出来的是AB,B而不是AB,AB??
|
x、y分别“指向”了对象a和b,所以x.append(y)和a.append(b)的效果一样,但是y=x只是改变了y,却不等于就改变了b,所以打印值是AB,B。
|
我终于看出来了。
你看 operate是函数,它里面的变量是局部变量。
而相对来讲,在main中
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
相当于是全局变量。
你现在在局部变量中对变量进行改变,到了main中,又将使用全局变量。
所以,出现了这样。
正如前面有位兄台已讲的,这类似于传值,(不同于传址)。
你可能会问whyx的值却变了,这是因为append可能里面用了传址的方法。我也没研究过。大体是这样,如果你学过c or c++ 什么的你肯定会知道的。
(我可没鼓励你去学c or c++ )
慢慢来,一定能行的。
public class Foo {
public static void main(String args[])
{
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
}
你看 operate是函数,它里面的变量是局部变量。
而相对来讲,在main中
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
相当于是全局变量。
你现在在局部变量中对变量进行改变,到了main中,又将使用全局变量。
所以,出现了这样。
正如前面有位兄台已讲的,这类似于传值,(不同于传址)。
你可能会问whyx的值却变了,这是因为append可能里面用了传址的方法。我也没研究过。大体是这样,如果你学过c or c++ 什么的你肯定会知道的。
(我可没鼓励你去学c or c++ )
慢慢来,一定能行的。
public class Foo {
public static void main(String args[])
{
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x,StringBuffer y)
{
x.append(y);
y=x;
}
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。