this关键字
this的本质:“创建好的对象的地址”! 由于在构造方法调用前,对象已经创建。因此,在构造方法中也可以使用this代表**当前对象** 。
this的常用方法:
1. 在程序中产生二义性之处,应使用this来指明当前对象;普通方法中,this总是指向调用该方法的对象。构造方法中,this总是指向正要初始化的对象。
2. 使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句。
3. this不能用于static方法中。static是静态方法,存放在方法区。this是当前类的对象,存放在堆中。当静态方法执行时,this还不存在,所以不可能使用this。
例:this()调用重载构造方法
public class TestThis2 {
int a,b,c;
TestThis2() {
System.out.println("正要初始化一个Hello对象");
}
TestThis2(int a,int b) {
this();//调用无参的构造方法,并且必须位于第一行
a = a;//这里都是指的局部变量而不是成员变量
//这样就区分了成员变量和局部变量,这种情况占了this使用情况大多数
this.a = a;
this.b = b;
}
TestThis2(int a,int b,int c) {
this(a, b);//调用带参的构造方法,并且必须位于第一行
this.c = c;
}
void sing() {
}
void eat() {
this.sing();//调用本类中的sing(); 可以不用
System.out.println("这波啊,这波是肉蛋葱鸡!");
}
public static void main(String[] args){
TestThis2 w=new TestThis2(2,3);
w.eat();
}
}
运行结果截图:
static关键字
在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:
1. 为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
2. 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
3. 一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)
4. 在static方法中不可直接访问非static的成员。
要点: static修饰的成员变量和方法,从属于类,普通变量和方法是从属于对象的
例:static关键字的使用
public class TestStatic {
int id;
String name;
String pwd;
static String company="百度";
public TestStatic(int id,String name) {
this.id = id;
this.name = name;
}
public void login() {
printCompany();
System.out.println(company);
System.out.println("登录:" + name);
}
public static void printCompany() {
//login();//调用非静态成员,编译就会报错
System.out.println(company);
}
public static void main(String[] args) {
TestStatic z=new TestStatic(111,"李四");
TestStatic.printCompany();
TestStatic.company="腾讯";
TestStatic.printCompany();
}
}
运行结果:
来源:CSDN
作者:Chill-W
链接:https://blog.csdn.net/weixin_45034110/article/details/104212974