public class J_Test
{
String m_kobe = "1";
String[] m_king = {"2"};
public static void main(String[] args)
{
J_Test app = new J_Test();
app.mb_operate(app.m_kobe, app.m_king);
System.out.println(app.m_kobe+app.m_king[0]);
}
static void mb_operate(String kobe, String[] king)
{
kobe = new String("3");
king[0] = new String("4");
}
}
输出结果为什么是14啊,我知道最终是m_kobe="1",m_king[0]=“4”,连接起来就是14,但是为什么经过mb_operate方法后,m_kobe的值没变,但m_king[0]的值变了。String和String[] 都属于引用类型,相当于C的指针那种,为什么只有m_king[0]的值变了。
有关StringBuffer的问题。
public class J_Test
{
public static void mb_method(StringBuffer x, StringBuffer y)
{
x.append(y);
y = x;
}
public static void main(String[] args)
{
StringBuffer a = new StringBuffer("A");
StringBuffer b = new StringBuffer("B");
mb_method(a, b);
System.out.println(a + "," + b);
}
}
那为什么这个程序输出是AB,B啊,如果StringBuffer是引用传递,那么结果应该是AB,AB啊???
为什么会有这种奇怪的情况啊:String是引用类型里面唯一一个会值传递的!!!!String在任何情况下都是值传递吗!!?
追答http://freej.blog.51cto.com/235241/168676/
这个博客分析的挺好的,你可以看看去,就明白了
我刚才做了一个题目,好像StringBuffer也是值传递啊。坑死我了。到底哪种情况是值传递啊。
追答stringbuffer不会是值传递的。引用类型只有String是。传递就只是涉及调用方法问题,具体操作结果是啥就看你方法内部如何写了
追问不好意思,超过字数不能追问,你看下我修改的问题,。