我开始学习更多关于Java的知识并被困在这里: 想要制作包含值,索引和休息的对象,并在main方法中创建对象列表。 通过向列表添加新对象,前一个条目将被覆盖。
到目前为止,这是我的代码:
public class LNGHW {
public static int value;
public static int index;
public static int rest;
public LNGHW(int val, int index, int mod) {
this.value = val;
this.index = index;
this.rest = mod;
}
public static void main(String[] args) {
ArrayList<LNGHW> items = new ArrayList<LNGHW>();
items.add(new LNGHW(4, 0, 1));
items.add(new LNGHW(2, 1, 1));
System.out.println(items.get(0).getValue());
System.out.println(items.get(1).getValue());
}
public int getValue() {
return value;
}
public static void setValue(int value) {
LNGHW.value = value;
}
public static int getIndex() {
return index;
}
public static void setIndex(int index) {
LNGHW.index = index;
}
public static int getRest() {
return rest;
}
public static void setRest(int rest) {
LNGHW.rest = rest;
}
}
我愿意接受各种帮助!
答案 0 :(得分:0)
import java.util.*;
import java.lang.*;
import java.io.*;
class LNGHW {
public int value; /*made them non-static*/
public int index;
public int rest;
public LNGHW(int val, int index, int mod) {
this.value = val;
this.index = index;
this.rest = mod;
}
public static void main(String[] args) {
ArrayList<LNGHW> items = new ArrayList<LNGHW>();
items.add(new LNGHW(4, 0, 1));
items.add(new LNGHW(2, 1, 1));
System.out.println(items.get(0).getValue());
System.out.println(items.get(1).getValue());
}
public int getValue() {
return this.value;
}
public void setValue(int value) { /*made these values non-static*/
this.value = value; /*set the values of object using **this**,not class name */
}
public int getIndex() {
return this.index;
}
public void setIndex(int index) {
this.index = index;
}
public int getRest() {
return this.rest;
}
public void setRest(int rest) {
this.rest = rest;
}}
要了解它为何会发生这种情况,您需要了解java中的静态,非静态和此关键字。请研究一下它们,然后就可以了解其中的差异。
STATIC - 当我们希望任何属性对于类的每个对象都相同时,我们使用static关键字。例如 - 假设有一个 MAN 类,并且年龄,性别等属性很少,那么不同对象的年龄会有所不同man class,即 age 属性是对象级属性,因此它将是非静态的。而 MAN 类的每个对象的性别都是男性,因此它是一个类级属性,因此它应该是静态的。
最后,只要有类级属性,我们就使用静态变量,否则对于对象级属性,我们使用非静态变量。
我们使用 this 关键字来引用非静态变量,其中类名用于引用静态变量。