class printString {
    String code;
    String desc;
    public printString() {
        this("code", "desc");
    }
    public printString(String codeString, String descString) {
        code = codeString;
        desc = descString;
    }
    public void print() {
        System.out.println(code + "," + desc);
    }
}

解决方案 »

  1.   

    对a而言,执行了一下这个操作
        public printString() {
    【printString tmp =】new printString("code", "desc") 【这里只是说明它执行的代码,
                public printString(String codeString, String descString) {
                     code = codeString;//注意,这里的code已经不是a的code了,
                     desc = descString;//而是这里new出来对象tmp的code了
                }
            】        
            出来以后,a.code从来没有被赋值过!
        }所以a.code 和 a.desc == null
      

  2.   

    在java中对象是按引用传递,而引用是按值传递的。这个题目的问题不在阐述传递,而是对于a 而言:
         a  -> new a'对象,但打印的是a对象的内容,而a对象的code,desc没有初始化过,所以是null;对于b当然是正确的
      

  3.   

    class printString {
        String code;
        String desc;
        public printString() {
            printString("code", "desc");
        }
        public printString(String codeString, String descString) {
            code = codeString;
            desc = descString;
        }
        public void print() {
            System.out.println(code + "," + desc);
        }
    }
      

  4.   

    同意楼上的兄弟们,大家说的都对,
    问题主要是在没有参数的构造函数中,没有对code何desc进行赋值,
    所以是用不带参数的构造函数 的时候就打印为null