Java类问题
我上课有问题。我自己制作了一个名为“人”的课程。它接受参数“name”和“age”。在我的另一门课上,我想成为一个人。这是可行的,主要问题是数组只保存我输入的最后一个条目。我怎样才能解决这个问题 请注意:这不是家庭作业。我正在做我自己的项目 代码:Java类问题,java,Java,我上课有问题。我自己制作了一个名为“人”的课程。它接受参数“name”和“age”。在我的另一门课上,我想成为一个人。这是可行的,主要问题是数组只保存我输入的最后一个条目。我怎样才能解决这个问题 请注意:这不是家庭作业。我正在做我自己的项目 代码: public class Person { private static String name; private static int age; public Person(){
public class Person {
private static String name;
private static int age;
public Person(){
Person.name = "NAME";
Person.age = 0;
}
public Diver(String name,int age){
Person.name = name;
Person.age = age;
}
public static String getName(){
return Person.name;
}
public static int getScore(){
return Person.age;
}
public static String printString(){
return Person.name + " " + Person.age;
}
}
public class TESTER {
public static void main(String[]args){
Person[] persons = new Person[4];
persons[0] = new Person("bob2",15);
persons[1] = new Person("bob1",15);
persons[2] = new Person("bob",16);
for(int i = 0;i<persons.length;i++){
System.out.println(persons[i].printString());
}
}
}
公共类人物{
私有静态字符串名;
私人静态信息;
公众人士(){
Person.name=“name”;
Person.age=0;
}
公共潜水员(字符串名称,整数){
Person.name=姓名;
Person.age=年龄;
}
公共静态字符串getName(){
返回Person.name;
}
公共静态int getScore(){
返回人。年龄;
}
公共静态字符串printString(){
返回Person.name+“”+Person.age;
}
}
公共类测试员{
公共静态void main(字符串[]args){
人员[]人员=新人员[4];
人员[0]=新人员(“bob2”,15);
人员[1]=新人员(“bob1”,15);
人员[2]=新人员(“bob”,16岁);
对于(inti=0;i不要将name和age设置为静态的。另外,要将所有方法设置为非静态的
静态变量特定于类。实例变量特定于该类的每个对象
然后,当在类中时,不要将变量称为Person.name
,而是将其称为name
静态变量是类范围内的,这意味着Person的每个实例共享相同的静态变量
public class Person {
private String name;
private int age;
public Person(){
name = "NAME";
age = 0;
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getScore(){
return age;
}
public String printString(){
return name + " " + age;
}
}
对对象使用静态变量和方法时,不要使用静态变量和方法
class aClass {
private static String name;
}
创建的类的每个实例(使用new生成的东西)都共享相同的“name”变量。
当你这么做的时候
class aClass {
private String name ;
}
每个实例都有自己的单独名称
不要让名字和年龄一成不变
当一个字段是静态的时,它意味着该字段不属于该类的实例,而是属于该类本身。这意味着在所有应用程序中只有一个变量名,并且所有Person实例都将共享该变量名。
因此,当您更改名称和年龄时,您会更改所有类的名称和年龄,并且它们都将具有您使用的最后一个类。这是可行的,主要问题是数组只保存我输入的最后一个条目。我如何解决此问题?
这背后的问题是,您使用的是静态变量,它们应该是实例变量。因为它们是静态的,所以每次都有一个副本被覆盖,最后一对name
和age
就是您得到的
让它们成为实例变量应该可以解决您的问题。Amen!这是一个问题的原因是,通过使变量成为静态变量,您可以使它们成为类的变量,而不是对象的变量,然后所有对象都将共享相同的名称和年龄变量——因此,如果您将其更改为一个变量,那么您就可以将其更改为所有变量。在某些情况下你应该使用静态变量。在这种情况下的一个例子是,如果他想记录有多少人。但大多数事情通常不应该是静态的(以我的经验)