JAVA自学_加强01STATIC

一、static静态关键字:

  在类中,可以用来修饰成员变量和成员方法,表示修饰的成员变量在内存中只存储一份,可以被共享访问修改。——public static 类型 名称(通常用PUBLIC)修饰,因为要共享

  如何访问:类名.静态成员变量(推荐方式)or对象名.成员变量;同一个类中,可以省略类名

  与之对应的是:实例成员变量,不用static修饰,存在于每个对象,要用对象访问(不能用类直接访问)

二、内存机制:

  加载类在方法区时,会在堆内存中加载静态变量区(只加载一次);提取方法到栈;

  使用对象访问静态变量的时候,由栈内存所存对象的地址找到堆内存的对象,再由对象找到静态成员变量(不推荐)

三、修饰方法时:

  方法分类为:静态成员方法(归属于类)同一个类中访问可以省略不写类名、实例成员方法(归属于对象)只能用对象访问

  何时使用:表示对象自己的行为,且方法中需要访问实例成员,必须申明成实例方法;如果该方法是以执行一个公用功能为目的,则可以申请成静态方法

  在内存中:静态方法以及类等方法一开始就加载到方法区,而实例对象的方法则没有加载;而实例对象一出来之后,实例方法才会被加载出来,而堆内存中的这个对象存的是实例方法的地址

四、注意:

  静态方法中不能出现this关键字,因为this指代的是当前对象的成员,静态方法有可能不使用对象调用。

  静态方法不能直接访问实例成员;实例方法可以访问静态成员(因为共享),也可以访问实例成员

三个应用知识:

 

五、工具类:

  定义:类中都是一些静态的方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用。

  为了防止同一个功能在多处使用开发,避免重复,提高开发效率。(调用时使用类名来调);一次编写,处处可用

  工具类无需创建对象,将工具类的构造器进行私有(不让他创建对象)

 六、代码块:

  是类中的五大成分之一;定义在类中,方法外;使用{}括起来的代码称为代码块(单独的一个大括号)

  根据有无static修饰分为:静态代码块——随着类的加载而加载,优先自动触发,只执行一次,用于初始化静态资源(某些变量前有static定义);在项目跑之前已经有信息可以使用了

             实例代码块(构造代码块)——每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并在构造器执行前执行,用于初始化实例资源(一般不会用)

  应用:定义一个静态的集合存储54张牌,静态集合只会加载一份;又因为要在游戏开始之前加载,故把此静态集合放在静态代码块中

七、单例设计模式:

  开发中解决问题的最优解,总结为设计模式,共有20多种,对应20多种开发问题,单例模式是其中之一。

  这个类永远只能创建一个对象

  实现方式很多——

  1饿汉单例模式:在用类获取对象时,对象已经提前为你创建好了(使用static静态成员变量即可)

    设计步骤:1构造器私有、2定义一个静态变量存储一个对象即可(拿的永远是一个对象)

  2、懒汉单例模式:

    在真正需要该对象时,才去创建一个对象(延迟加载对象)——1构造器私有、2定义一个静态变量存对象,最好将其私有化(但是此时不能new一个对象)、3必须提供一个方法返回一个单例对象(只有第一次进来才会创建对象,以后进来直接给之前的地址)

posted @ 2022-04-22 16:14  dreamLucode  阅读(27)  评论(0编辑  收藏  举报