• Java 随心笔记6


    一、成员变量和局部变量(思考)
    类中位置不同:成员变量在类中,方法外; 局部变量在方法内或方法声明上
    内存中位置不同:成员变量堆内存,局部变量栈内存;
    生命周期不同:成员变量随着对象存在而存在,局部变量变量随方法调用而存在,方法调用完毕结束而消失
    初始化值不同:成员变量有默认的初始化值,局部变量没有,先定义赋值才能使用。

    参数传递时传递的值

    二、类的初始化
    加载class进内存
    ==》在栈内存中为s开空间
    ==》在堆内存中为学生对象开辟空间(new 类)
    ==》对学生对象的成员变量进行默认初始化;
    ==》对学生对象的成员进行默认、显示初始化;
    ==》通过构造方法对 对象的成员变量进行赋值;
    ==》学生对象初始化完毕,把杜希昂地址赋值给s变量。

    三、static关键字
    修饰成员变量和成员方法
    特点
    随着类的加载而加载
    优先于对象存在(加载在class的静态区)
    被类的所有对象共享(判断是否使用静态关键字的条件)
    可以通过类名调用(Student.say();)
    作用
    在静态方法中没有this关键字
    静态方法只能访问静态的成员变量和静态的成员方法
    1.静态方法不能访问非静态成员变量
    2.非静态方法可以访问静态成员变量
    四、静态变量和成员变量的区别
    所属不同
    静态变量属于类,所以也称为为类变量
    成员变量属于对象,所以也称为实例变量(对象变量)
    内存中位置不同
    静态变量存储于方法区的静态区
    成员变量存储于堆内存
    内存出现时间不同
    静态变量随着类的加载而加载,随着类的消失而消失
    成员变量随着对象的创建而存在,随着对象的消失而消失
    调用不同

    静态变量可以通过类名调用,也可以通过对象调用
    成员变量只能通过对象名调用


    五、static代码块 构造代码块 局部代码块
    局部代码块
    在方法中出现;限定变量生命周期,及早释放,提高内存利用率
    构造代码块 格式:{执行语句}
    在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
    静态代码块 (在类中方法外出现,加了static修饰)
    在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且值执行一次。
    静态代码块优先于构造代码块,而创建对象就会执行构造代码块,

     1 /*动态成员方法
     2     非静态成员方法访问静态成员变量
     3 */
     4 class Demo_3
     5 {
     6     public static void main(String[] args) 
     7     {
     8         Students s = new Students();
     9         s.b = 13;
    10         s.say();
    11     }
    12 }
    13 class Students
    14 {
    15     int a;
    16     static int b;
    17     //非静态成员方法访问静态成员变量;
    18     public void say(){
    19         System.out.println(b);
    20     }
    21 }
    非静态成员方法访问静态成员变量
    /*静态成员方法
        静态成员方法访问非静态成员变量
        结果:无法访问从静态上下文应用非静态变量
    */
    class Demo_5
    {
        public static void main(String[] args) 
        {
            Students s = new Students();
            s.a = 13;
            s.say();
        }
    }
    class Students
    {
        int a;
        static int b;
        //静态成员方法访问非静态成员变量;
        public static void say(){
            System.out.println(a);
    
        }
    }
    静态成员方法访问非静态成员变量


    五、继承的概念
    1.继承
    特点:只支持单继承,不支持多继承(只能有一个父类)
    支持多层继承,class a{} class b extends a{} class c extends b{}

    作用:提高代码的复用性
    提高代码的维护性
    让类与类之间产生关系,是多态的前提(继承的弊端,耦合性特别强)

    2.super的用法和this
    定义:this代表本类对应的引用,
    super代表父类存储空间的标识(父类引用)
    用法:访问成员变量 this.成员变量 super.成员变量
    访问构造方法 this(...) super(...)
    访问成员方法 this.成员方法() super成员方法()
    注意:在子类继承父类中的数据,会使用父类的数据,子类初始化之前要完成父类数据的初始化
    每一个构造方法的第一条语句默认是super()

    同样的梦想,不一样的起点,大家共同进步, 微信公众号「孝客之乡」作者。
  • 相关阅读:
    最长递增子序列 LIS 时间复杂度O(nlogn)的Java实现
    动态规划算法(后附常见动态规划为题及Java代码实现)
    2个字符串的最长公共子串
    VS2010常用快捷键
    错误代码errno值的含义
    几个常用I/O函数用法(printf,fprintf等)
    查看CPU位数的方法
    关于函数指针的总结
    日本标点符号的输入总结
    共享内存及信号量的几个函数介绍
  • 原文地址:https://www.cnblogs.com/JulyTail/p/9054009.html
Copyright © 2020-2023  润新知