this关键字:
1、 this表示的是当前本身。更准确的说,this代表当前对象的一个引用。
2、 区分类成员属性和方法的形参,调用当前对象的其他方法。(任意位置)
3、 使用this来调用其他构造方法。(必须是第一条语句)
4、 This不能用于static方法。
代码示例:
public class TestThis {
int a,b,c;
TestThis(){
System.out.println("正要new一个Hello对象");
}
TestThis(int a,int b){
//Hello(); // //这样是无法调用构造方法的!
this(); //调用无参的构造方法,并且必须位于第一行!
a = a;//这里都是指的局部变量而不是成员变量
this.a = a;//这样就区分了成员变量和局部变量. 这种情况占了this使用情况的大多数!
this.b = b;
}
TestThis(int a,int b,int c){
this(a,b); //调用无参的构造方法,并且必须位于第一行!
this.c = c;
}
void sing(){}
void chifan(){
this.sing(); //sing();
System.out.println("你妈妈喊你回家吃饭!");
}
public static void main(String[] args){
TestThis hi = new TestThis(2,3);
hi.chifan();
}
}
Static关键字:在类中中,用static生命的成员变量为静态成员变量,或者叫做类属性,类变量。
1、 他为该类的公用变量,属于累,被该类的所有实例共享,在类被载入时被显式初始化。
2、 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享。
3、 可以使用“对象.类属性”来调用。不过,一般都是用“类名.类属性”。
4、 Static变量置于方法区中。
用static声明的方法为静态方法:
1、不需要对象,就可以调用(类名.方法名)。
2、在调用该方法是,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
3、静态方法不能以任何方式引用this和super关键字。
public class TestStatic {
int a;
static int width;
static void gg(){
System.out.println("gg");
}
void tt(){
System.out.println("tt");
}
public static void main(String[] args){
TestStatic hi = new TestStatic();
TestStatic.width = 2;
TestStatic.gg(); //gg();
hi.gg(); //通过引用也可以访问static变量或static方法。不过,一般还是使用类名.static成员名来访问。
gg();
}
}
静态初始化块:
1、 如果希望加载后,对整个类进行某些初始化操作,可以使用static初始化代码块。
2、 类第一次被载入时先执行static代码块;类多次载入时,static代码块只执行一次;static经常用来进行static变量的初始化。
3、 是在类初始化是执行,不是在创建对象时执行。
4、 静态初始化块中不能访问非static成员。
public class TestStaticBlock {
static {
System.out.println("此处,可执行类的初始化工作!");
}
public static void main(String[] args) {
System.out.println("main方法中的第一句");
}
}