This:表示是一个对象的默认引用,总是指向调用该方法的对象,根据this出现的位置不同,this作为对象的引用有两种情形:
1、构造器中引用该构造器执行初始化的对象!
2、在方法中引用调用该方法的对象!
Static:静态的,不依赖对象,依赖类(类级别)
可以在对象中共享
classTt{static inta;
}public classMain {public static voidmain(String[] args) {
Tt tt1=newTt();
tt1.a++;
System.out.println(tt1.a);
System.out.println("*************");
Tt tt2=newTt();
tt2.a++;
System.out.println(tt2.a);
}
}
这里第一次打印tt1.a时等于1;
第二次打印时因为重新new了对象理应tt2.a也等于1,但是由于a属性加了static所以不依赖对象而是依赖类,可以在对象中共享,所以tt2.a是基于tt1.a上等于2!
static方法中不可以直接调用非static的属性和方法;想要使用必须new新对象,用对象调用!
Static三个说明:
1、 静态变量 :类级别变量,是这个类的变量而不是某一个对象的变量。可以用类名调用(当然也可以用对象调用),所有的对象所使用的静态变量所使用的是同一份(一个类生产多个对象时,用一个对象改变了一个静态变量,那么所有对象的这个静态变量都会改变,堆中这个“静态区”,专门放置静态变量区)。
2、 静态函数:可以直接用类名调用,在静态函数中不能用this(在静态函数中不能直接使用非静态成员函数和非静态成员变量,静态函数中只能用静态成员变量)如果一个函数不使用成员变量(不受哪个对象调用该对象左右)理论上就可以定义成静态函数,一般来讲“工具函数”定义为静态函数
3、 静态代码块:
Static{
Sysout(“静态代码块!”);
} 优于主函数运行(类在装载的时候执行)
1、给静态变量赋初始值2、装载本地代码(native->c、c++)