main方法访问实例变量:无法从静态上下文引用非静态变量i
public class Test12{
int i=10;
static int k=100;
public static void main(String[] args){
//System.out.println(i);//无法从静态上下文引用非静态变量i
System.out.println(k);
}
}
静态方法访问实例变量
public class Test12{
int i=10;
static int k=100;
public static void main(String[] args){
System.out.println(k);
Test12 t=new Test12();
System.out.println(t.i);
}
}
静态方法访问实例变量必须先new对象,通过引用的方式来访问。(同时也注意到静态方法可以直接访问静态变量)
调用实例方法,实例方法访问实例变量
public class Test12{
int i=10;
static int k=100;
public static void main(String[] args){
//System.out.println(i);//无法从静态上下文引用非静态变量i
System.out.println(k);
Test12 t=new Test12();
System.out.println(t.i);
t.i=100000;
t.method();
}
public void method(){
System.out.println(k);
System.out.println(i);
}
}
实例方法必须通过引用.方式来调用,
调用的实例方法中,若访问了成员变量,其实默认内含了this.((同时也注意到实例方法可以直接访问静态变量)
总结: 一、静态方法和实例方法都可以直接读和写静态变量
二、 静态方法读和写实例变量时要先new对象
三、 实例方法读和写实例变量也需要先new对象。因为实例方法的使用必须通过引用的方式,所以调用实例方法的时候就已经new了个对象,new对象其实就是调用了构造方法。有对象就有this。当我们用引用的方式调用实例方法时,实例方法如果访问实例变量,其内含着this