易截截图软件、单文件、免安装、纯绿色、仅160KB

关于java中的参数传递

问题的引入是因为下午在群里看到了一个网友的问题:
给定如下Java 代码,编译运行后,输出结果是(  )。
public class Test {
    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;
    }
}
A. A,B    B. AB,B    C. A,AB     D.AB,AB
朋友可以猜猜这个答案,我也想告诉大家,答案是:B。也许有人会很惊讶,也许有人会很淡定。因为StringBuffer是一个类,对于类的使用,通过new,在堆中创建一个类的实例,利用一个引用来实现对这个对象的操作。当把一个引用当作参数传递到一个函数中的时候,C++采取的是:这个参数是一个地址。而在java中没有地址这个概念,一切都是值传递,那么这里又是怎么控制的。
首先,我做了一个测试: 
public class Text {
    public static void main(String[] args) {
        String s = "b";
        f(s);
        System.out.println(s);
    }
    static void f(String s) {
        s = "c";
    }
} /* output
b
*///~
从结果可以看出:形参的效果并没有作用到实参中。我们继续看下一段代码:
public class Text {
    String s = "b";
    public static void main(String[] args) {
        Text t = new text();
        f(t.s);
       


相关文档:

传智播客JAVA培训2010 5 8OA第二天总结


传智播客JAVA培训2010-5-8OA第二天总结
一直以来,都听到这样的话,今天又在网上看到了这样一句话“写出一行代码往往比理解一行代码更重要。因为理解问题也许仅是一个数学上或实验上的技能而已,而写出一行新的代码,却需要有创造性的”。这毫无疑问的表显出来,学程序的最基本道理。当我们报着算法的书籍在啃 ......

JAVA 字符串编码总结

 String newStr = new String(oldStr.getBytes(), "UTF-8");    
 
java中的String类是按照unicode进行编码的,当使用String(byte[] bytes, String encoding)构造字符串时,encoding所指的是bytes中的数据是按照那种方式编码的,而不是最后产生的String是什么编码方式,换句话说,是让系 ......

Java图形界面编程总结

1. 布局管理器
容器里组件的大小和位置是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用,当容器需要定位一个组件时,它将调用布局管理器来完成,决定一个组件的大小时也是如此。
 
在awt中有五种布局管理器
BorderLayOut
FlowLayOut
GridLayOut
GardLayOut
GridBagLayOut
 
1. & ......

传智播客Java培训 Dom4j

    从5月5号进入就业班到现在四天的时间了,上了这几天课发现就业班的强度真的很大,不像以前基础班的时候那么还比较轻松,已经渐渐感觉到了吃力,因为现在上课需要讲解的知识点太多,有时候下午老师讲到6点多钟才下课,课上的练习时间越来越少了,只能自己利用课后的时间多练习实践,许多东西还都是第一次 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号