public class Student2 {
private String name;
private int age;
private String sex;
private String subject;public Student2(String name,int age){
sex = "男";
subject = "C#";
}
public Student2(String name,int age,String sex,String subject){}
public void print(){
System.out.println("名字是:"+name+"年龄是:"+age+"性别是:"+sex+"专业是:"+ subject);
}public class Student1Test {
public static void main(String[]agrs){
Student2 sd = new Student2("小明",20);
Student2 sd1 = new Student2("小丽",22,"女","java");
sd.print(); 
sd1.print();
}
}
这代码对么? 为什么调用不出来?不是括号给值?

解决方案 »

  1.   

    你只是将数据传递给了构造方法。但是你在构造方法内并没有将 参数赋值给Student2中的成员变量。这样再试试public Student2(String name,int age){
    this.name = name ;
    this.age = age ;
    sex = "男";
    subject = "C#";
    }
    public Student2(String name,int age,String sex,String subject){
    this.name = name ;
    this.age = age ;
    this.sex = sex;
    this.subject = subject;
    }
      

  2.   

    你的输出肯定是:
    名字是:null年龄是:0性别是:男专业是:C#
    名字是:null年龄是:0性别是:null专业是:null我不太明白楼主的意思,你的意思是希望 把名字直接打印出来 ? 不应该是null ?这个是很基础的问题, 你需要在构造函数里赋值:public Student2(String name,int age){ 
    this.name = name;
    this.age=age;
    sex = "男";
    subject = "C#"; 
    }初始化类对象本身只是调用构造函数,不会做别的事情。你必须要在构造函数中为变量name和age赋值啊。
    另外一个构造函数同理。
      

  3.   

    谢谢  可以了 还没学this有什么用 现在也了解了一点
      

  4.   

    答案就如楼上的,如果用的是eclipse的话,可以自动生成的。
    方式:
    source—>
    Generate Constructor useing Fields
    自动生成
      

  5.   

    这代码貌似有问题哦~ public class Student2 后面还有public class Student1Test  一个包内只能有一个公共类吧?
      

  6.   

    如果你想知道this的用处,很简单
    public Student2(String name,int age){
    this.name = name ;
    this.age = age ;
    sex = "男";
    subject = "C#";
    }
    改成
    public Student2(String name,int age){
    System.out.println(this.name)
    SysTEM.out.println(name);
    this.age = age ;
    sex = "男";
    subject = "C#";
    }
    然后看结果就知道了。