首页 > 编程学习 > 关于java语言当中的this关键字

关于java语言当中的this关键字

发布时间:2022/11/18 5:02:24
/**
 * 关于java语言当中的this关键字:(其内存图见下图)
 *     1、this是一个关键字,翻译为:“这个”
 *     2、this是一个引用,它是一个变量,this变量中保存的内存地址指向了自身,this存储在JVM堆内存java对象的内部
 *     3、每个java对象中都有this这个变量,创建多少个对象,就有多少个this。
 *     4、this出现在“实例方法”当中,this指向当前正在执行这个动作的对象。(this代表当前对象)
 *     5、多数情况下this是可以省略的。
 *     6、this不能在带有static的方法中直接使用,在静态方法中不能直接访问实例变量和实例方法,因为访问实例变量和实例方法都需要对象的存在
 *     7、this什么时候不能省略:用来区分实例变量和局部变量的时候“this”不能省略(比如:有参构造方法和setter方法中this不能省略)
 *     8、this可以使用在构造方法当中,作用是通过当前的构造方法调用其他构造方法,作用是代码复用
 *              -  语法格式:this(实参);
 *              -  this()这种语法只能出现在构造方法的第一行
 */
public class ThisText {
//    实例变量
    int i = 20;
//    静态变量
    static int k = 10;
//    静态方法
    public static void doSome(){
        System.out.println("do some!");
    }
//    实例方法
    public void doOther(){
        System.out.println("do other!");
    }
//    静态方法
    public static void method1(){
//        在静态方法中调用静态方法doSome 完整的方式
        ThisText.doSome();
//        同一个类中静态方法调用静态方法doSome 的省略方式
        doSome();

//        在静态方法中调用实例方法doOther 需要有对象的参与 完整的方式如下
//        创建ThisText对象
        ThisText t1 = new ThisText();
        t1.doOther();
//        在静态方法中调用实例方法doOther 没有省略的方式

//        在静态方法中访问静态变量k的完整方式
        System.out.println(ThisText.k);
//        在静态方法中访问静态变量k的省略方式(省略"类名.")
        System.out.println(k);

//        在静态方法中访问实例变量i 需要有对象的参与 完整的方式
        System.out.println(t1.i);
//        在静态方法中访问实例变量i 没有省略的方式
    }

//    实例方法
    public void method2(){
//        在实例方法中调用静态方法doSome 完整的方式
        ThisText.doSome();
//        在实例方法中调用静态方法doSome 省略的方式
        doSome();
        this.doSome();// 带有static关键字的静态方法应该采用"类名."的正规方式访问,但是通过"引用."的方式访问也是可以的,
                      // 只不过实际执行的时候和引用指向的对象无关,并且当引用为空的时候,也不会出现空指针异常。
                      // 当采用"引用."来访问静态方法的时候“IDEA软件”会出现警告,程序仍然可以执行。

//       在实例方法中 调用实例方法doOther 完整的方式  因为实例方法method被调用的时候已经有了对象,此位置的this就是指向这个对象,
        this.doOther();
//        在实例方法中调用实例方法doOther 省略的方式  (省略了this)
        doOther();

//        在实例方法中访问静态变量k 完整的方式
        System.out.println(ThisText.k);
        System.out.println(this.k);//这里访问静态变量是使用的"引用.",虽然可以,但是不建议这样使用
//        在实例方法中访问静态变量k 省略的方式
        System.out.println(k);//这里省略了"类名."

//        在实例方法中访问实例变量i 完整的方式
        System.out.println(this.i);
//        在实例方法中访问实例变量i 省略的方式
        System.out.println(i);
    }
//    主方法(也是静态方法)
    public static void main(String[] args) {
//        编写程序调用静态方法method1 完整方式调用
        ThisText.method1();
//        编写程序调用静态方法method1 省略方式调用
        method1();

//        创建ThisText对象
        ThisText tt = new ThisText();
//        编写程序调用method2 完整方式调用
        tt.method2();
//        编写程序调用method2 没有省略方式
    }
}

 

Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式