当我在Java中运行程序时,它在控制台中打印为null

时间:2018-03-24 14:48:59

标签: java eclipse

`

package Stuff;

public class Student{
private String name;
private int age;

public Student(String studentName,int studentAge){
    studentName = name;
    studentAge = age;
}

public void printName(){
    System.out.println(name);
}

public void printAge(){
    System.out.println(age);
    }

public void printInfo(){
    System.out.println(name);
    System.out.println(age);
}

public static void main(String[] arg0){
    Student  student1;
    student1 = new Student("ragaey",22);

    student1.printInfo();

}

}

` 当我请求student1.printName()和0当我请求Student.printAge()

时,我不知道控制台打印我(null)的代码在哪里出错了

5 个答案:

答案 0 :(得分:3)

构造函数中的变量赋值是错误的。

答案 1 :(得分:1)

您正在以错误的方式在构造函数中分配变量。正确的方法是:

public Student(String studentName,int studentAge){
    name = studentName;
    age = studentAge;
}

如果你自动生成构造函数,那么它将看起来像这样,这是更常见的约定:

public Student(String name,int age){
    this.name = name;
    this.age = age;
}

答案 2 :(得分:0)

你搞砸了初始化部分studentname = name and studentage = age正确的初始化方式

public class Student{
    private String name;
    private int age;

public Student(String studentName,int studentAge){
    name = studentName;
    age = studentAge;
}

public void printName(){
    System.out.println(name);
}

public void printAge(){
    System.out.println(age);
    }

public void printInfo(){
    System.out.println(name);
    System.out.println(age);
}

public static void main(String[] arg0){
    Student  student1;
    student1 = new Student("ragaey",22);

    student1.printInfo();

}

}

答案 3 :(得分:0)

构造函数应该像

public Student(String studentName,int studentAge){
    this.name = studentName;
    this.age = studentAge;
}

答案 4 :(得分:0)

我强烈建议您查看this article on associativity in Java

基本上,当您使用=运算符为变量赋值时,语句将从右向左执行。因此,右手侧表达式的结果被分配给左手侧的变量。

因此,int a = 5+5表示5+5的结果存储在变量a中。这也是studentName = namename(这是字符串类型的默认值 - null)的值分配给studentName的原因。

同样重要的是要注意null是Java中的关键字,如果你打印这样的null:

System.out.println(null)

将抛出语法错误(这是由于其他原因)。

编辑 - 在输入时,只有一个答案,并没有任何解释。现在,我看到还有更多。虽然其他答案可能会告诉你该怎么做,但我认为这个答案会告诉你如何思考在Java中,这样你就不会再犯这样的错误了。