`
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)的代码在哪里出错了答案 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 = name
将name
(这是字符串类型的默认值 - null
)的值分配给studentName
的原因。
同样重要的是要注意null
是Java中的关键字,如果你打印这样的null:
System.out.println(null)
将抛出语法错误(这是由于其他原因)。
编辑 - 在输入时,只有一个答案,并没有任何解释。现在,我看到还有更多。虽然其他答案可能会告诉你该怎么做,但我认为这个答案会告诉你如何思考在Java中,这样你就不会再犯这样的错误了。