• javaSE基础07


    javaSE基础07

    一、static静态修饰符

    用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区)

    1.1 static用来修饰成员变量

    一个成员变量被static修饰了叫静态成员变量,如果没有修饰叫非静态成员变量

    静态成员变量的访问方式:

      1.用对象进行访问:对象.变量名

      2.还可以通过类名来访问:类名.变量名

    使用注意点:

      1.不要认为方便就将所有的变量用static修饰,只有当这个数据真正需要共享的时候才用static修饰

      2.只有静态变量才能用类名访问,非静态变量只能用对象访问

      3.局部变量不允许被static修饰

     

    1.1.1静态变量和非静态变量的区别:

    1.作用上看:

      a) 静态变量是用来共享的,所有的对象都可以访问到

      b) 非静态变量就是用来描述同一类事物的公共属性

    2.数量和存储位置

      a) 静态变量在方法区(数据共享区),并且只有一份数据

      b) 非静态变量存在堆区中,对象有n个那么数据就有n

    3.生命周期:

      a) 静态变量是随着类文件的加载而加载,随着类文件的消失而消失

      b) 非静态变量是随着对象创建而创建的,随着对象的消失而消失

     

     

    1.2用来修饰方法

    类似OC中的类方法:

       1.只能用类名来调用

      2.类中是不允许访问属性

     

    访问方式:

      1.可以通过对象来访问

        a) 对象.方法名

      2.也可以通过类名来访问(推荐使用类名调用,为了与普通方法进行区分)

        a) .方法名

      结构上就是在public后面多了一个static,叫做静态方法:

        Public static void eat(){

        }

     

    1.3 Static修饰方法的使用注意点:

       1.静态方法可以用对象和类名调用非静态方法只能用对象调用

      2.静态方法可以访问静态的成员变量,不能访问非静态的成员变量,非静态方法中可以访问任何成员变量(原因:因为有时候我的静态方法被调用了对象还没被创建,以为静态方法可以被类名调用)

      3.静态方法中可以直接访问静态方法,但是不能访问非静态方法,但是非静态方法可以访问静态方法 (原因:有时候我的静态方法被调用了对象还没被创建,非静态方法只能由对象调用;如果对象被创建出来,静态方法已经存在内存中,就可以访问)

      4.静态方法中不允许出现thissuper关键字(原因:可能对象还没被创建出来)

        a) this:表示一个方法调用者对象

     

    特点:静态的数据是会早于非静态的数据存在内存中

      静态代码块:在编译java.class文件被使用的时候就执行了

    什么情况下使用static修饰方法:

      当一个方法不需要直接访问非静态数据时,就可以用static修饰(定义成一个工具)

     

    二、单例设计模式

     2.1概念:一个类只能够创建一个对象出来

    软件行业中有23中设计模式,但是在java中只会讲5种:

      1.单例设计模式

      2.观察者模式

      3.模块设计模式(MVC

      4.装饰设计模式

       5.工厂模式

    设计模式:用来解决一类问题的解决方案(固定的步骤)

     

    2.2单例设置步骤:

      1.创建一个对象把他设置为一个私有的静态成员变量,保证对象唯一 

      2.把构造方法设置为私有的,防止new一个对象

      3.定义一个公开的静态方法,返回值为上面的对象

     

    2.3两种设计模式

    1. 饿汉设计模式

    Class SingleDog {

    //保证对象唯一

    //声明本类的引用变量,并且把对象创建出来

    private static SingleDog s = new SingleDog();

    //私有化构造方法,防止通过new来创建对象

    private SingleDog(){ }

    //提供一个静态方法来接收唯一的对象

    public static SingleDog getInstance(){

     return s

    } }

     

    2.懒汉单例设计模式( 要用时才创建对象,不建议使用,因线程不安全)

     

    Class SingleDog2 {

    //声明本类的引用变量,但不创建对象

    Private static SingleDog2 s;

    //私有化构造方法

    Private SingleDog2 ();

    //提供一个静态的法来接收唯一的对象

    public static SingleDog2 getInstance(){

    Ifs == null{

    S == new SongleDog2();

    }

    return s;

    }

    }

     

    OC中的单例:

     

    +SingleDog *default {

    //保证对象唯一

    static SingleDog s

    If ( s == null){

    s = [[SingleDog  alloc] init];

    }

    return s;

    }

     

    三、封装 

    3.1权限修饰符:

    public公共的 修饰的变量和方法任何人都可以进行访问

    Private私有的 修饰的变量和方法只能在本类中访问

    3.2封装的步骤:

      1.使用private修饰需要封装的成员变量

      2.提供一个公开的方法设置或者访问私有的属性

        设置:通过set方法:

            命名规范:

              set属性名();属性的首字母要大写

        访问:通过get方法

            命名规范:

              get属性名();属性的首字母要大写

      代码书写规范:java开发中一般类成员变量(属性),都是封装起来的

     

    封装用于

      1.框架

      2.工具类

     

    封装的好处

      1.提高了数据是安全性

      2.操作简单

      3.隐藏了方法的实现

     

  • 相关阅读:
    ABAP-FI-Redirection of read accesses from ANEA to FAAV_ANEA failed
    招聘
    五分钟教你在长沙如何找到靠谱的驾校和教练(长沙找驾校)
    数组哪些方法能改变原数组,以及循环改变数组的情况
    FXGL游戏开发-JavaFX游戏框架
    tempermonkey.d.ts | 油猴函数类型
    post导出文件
    mescroll.js 使用
    查看托管应用池用法
    IDEA配置
  • 原文地址:https://www.cnblogs.com/qlhMeiMei/p/6192981.html
Copyright © 2020-2023  润新知