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


    /**
     * 关于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 没有省略方式
        }
    }

  • 相关阅读:
    计算机毕业设计django基于python租房系统-房屋租赁系统(源码+系统+mysql数据库+Lw文档)
    ESP8266 WiFi物联网智能插座—上位机和下位机通信协议
    DC综合 trip points问题
    Django部署vue项目报错:Not Found The requested resource was not found on this server.
    网络安全进阶学习第十八课——业务逻辑漏洞(附录:不同行业业务逻辑的漏洞)
    Python制作爱心跳动代码,这就是程序员的烂漫吗
    React-1 基础知识
    Deque容器的系列操作( 详解 )
    三维全景融合拼接技术
    【王道】计算机网络数据链路层(二)
  • 原文地址:https://blog.csdn.net/heliuerya/article/details/127911676