易截截图软件、单文件、免安装、纯绿色、仅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 设计架构

目录
摘要 ……………………………………………………………………2
文献综述 ……………………&hel ......

java笔试题总结与大家分享

java试题
http://202.201.112.11/jpk/apply/teacher/preface/53/test123/test3/exam.htm
1.接口中方法的前面有哪些修饰符
 访问权限 返回值类型 是否静态 是否抽象
2.以下哪个为真
  Interger a = new Interger(9);
  Interger b = new Interger(9);
  Long c = New Long(9)
-----
&nbs ......

Hibernate之父建议开发者升级到Java EE 6

http://developer.51cto.com/art/201001/180400.htm
文来自CSDN博客,原文标题为《Hibernate 之父:是时候升级到Java EE 6了》。
Hibernate 之父Gavin King建议开发者升级到 Java EE 6 平台,并指出,目前各种不愿意升级的观点其实是没有根据的。
Java EE 6 发布后,我看到了很多反对升级到新平台的观点。这些反对观点大 ......

传智播客Java培训 Dom4j

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