public class TestMethod {
int i1 = 0;
static int i2 = 0;
public void test1(){
i1 = 0;
i2 = 0;
System.out.println("no static");
}
public static void test2(){
//i1 = 0;
i2 = 0;
System.out.println("static");}
public static void main(String[] args) {
TestMethod.test2();
TestMethod t=new TestMethod();
t.test1();
System.out.println(i1);
System.out.println(i2);
}
}
为什么不能打印i1,加static了有什么用,
static有哪些作用
望高手详解
int i1 = 0;
static int i2 = 0;
public void test1(){
i1 = 0;
i2 = 0;
System.out.println("no static");
}
public static void test2(){
//i1 = 0;
i2 = 0;
System.out.println("static");}
public static void main(String[] args) {
TestMethod.test2();
TestMethod t=new TestMethod();
t.test1();
System.out.println(i1);
System.out.println(i2);
}
}
为什么不能打印i1,加static了有什么用,
static有哪些作用
望高手详解
看你结帖率0%,剩下的不想说了...
int i1 = 0;
static int i2 = 0;
public void test1(){
i1 = 0;
i2 = 0;
System.out.println("no static");
}
public static void test2(){
//i1 = 0;
i2 = 0;
System.out.println("static");}
public static void main(String[] args) {
TestMethod.test2();
TestMethod t=new TestMethod();
t.test1();
System.out.println(i1); //此行,错误!原因:i1是非静态的,而你的马main是静态的,can not make a static reference to the non-static field i1
System.out.println(i2);
}
}
简单的说 在静态域中不能引用非静态变量
i1、i2即:TestMethod.i1,TestMethod.i2是静态成员(类成员),可以直接由类调用
生命周期也不一样 非静态成员(包括属性或方法) 是每个对象独有1个。引用的方法为: 对象名.属性名 对象名.方法名
静态可以理解为本类共享,引用静态属性或方法的方法是 类名.属性名 类名.属性名另外,静态方法中无法引用本类中的非静态成员。所以因为main方法是静态的,所以引用的本类属性也必须是静态的,如果去掉 static 当然会出错。
加static是属于类的,不加是属于对象的!
属于类的在类加载后就存在了!而不加static的属性是属于对象的!实例话出对象后才有!
所以开始的静态方法里面找不到非静态的变量!
所以不行!新手,说的不对大家批评指教!