其他分享
首页 > 其他分享> > 2022-07-27 第五组 赖哲栋 学习笔记

2022-07-27 第五组 赖哲栋 学习笔记

作者:互联网

代码块

  1. 代码块又称初始化块,属于类的一个成员
  2. 它是将逻辑语句封装在方法体中通过{}包裹,代码块没有方法名,没有参数,没有返回值,只有方法体
  3. 它是不需要通过对象或类进行显式的调用,它会在类加载或者创建对象时主动的隐式调用

(1)静态代码块

(2)实例化代码

静态

  1. 可用于定义属性、方法、代码块
  2. static修饰的结构,不属于任何一个对象
  3. 静态方法无论在哪里都是类名.方法名调用,同一个类的静态方法之间可以省略
  4. 静态方法没有重写这个概念

(1)实例方法和静态方法互相调用:

(2)static内存解析:

静态的结构:随着类的加载而加载的
非静态的结构:随着对象的创建而加载
在Java中调用实例方法,必须有主体。

类的组成结构:属性、方法、构造器、代码块、内部类
内部类:在一个类内部进行其他类结构的嵌套操作
外部类:一个public声明的类,类名必须和.java的文件名相同

设计模式

设计模式是人们为软件开发中抽象出可重复利用的解决方案;软件开发工程师之间沟通的"行话"

面向对象的设计原理:

  1. 开闭原则(Open Principle)
  1. 里氏代换原则
  1. 依赖倒转原则
  1. 接口隔离原则
  1. 迪米特法则
  2. 合成复用原则
  3. 一原则:一个类只做一件事
  4. 单例模式

单例模式

一个类只有一个实例
思路

  1. 别人不能new,构造器私有化,不能在类的外部通过new去实例化
  2. 在该类内部产生一个唯一的实例对象,把它封装成static类型
  3. 定义一个静态方法返回这个唯一的对象

饿汉式单例模型

不管以后会不会使用到该实例化对象,先创建了再说

//实现的办法就是直接new实例化

public class Ch03 {

    private static final Ch03 ch03 = new Ch03();

    private Ch03(){}

    public static Ch03 getInstance(){
        return ch03;
    }
}

懒汉式(延迟加载)

什么时候调用getInstance方法,什么时候new

//这种懒汉式在多线程环境中是完全错误的,根本不能保证单例的状态

public class Ch04 {
    //将自身实例化对象设置为一个属性,现在是没有赋值的
    private static Ch04 ch04;

    //构造器私有化
    private Ch04(){}

    public static Ch04 getInstance(){
        if(ch04 == null){
            ch04 = new Ch04();
        }
        return ch04;
    }
}

内部类实现单例

它是懒汉式的一种,这种懒汉式没有线程的问题

结合了饿汉式和懒汉式的优点:

  1. 只要不调用getInstance方法,就不会使用内部类
  2. 内部类一旦被使用就只会被初始化一次,以后一直用的是INSTANCE静态常量
public class Ch05 {
    //私有化构造器
    private  Ch05(){}

    public static Ch05 getInstance(){
        return SingletonHolder.INSTANCE;
    }
    public static class SingletonHolder{
        private static final Ch05 INSTANCE = new Ch05();
    }
}

JDK8的新特性——箭头函数

  1. 函数式接口:如果一个接口只有一个抽象方法,这个接口就称为函数式接口
  2. 可以用注解@FunctionalInterface标识
1、有参数,有返回值。
    (i,j) -> {
        return i + j;
    }
    如果方法体只是一句返回值(i,j) -> i+j
   2、有参数,无返回值
    (i,j) -> {
        // 方法体
    }
    如果方法体只有一句话(i,j) -> 方法体的一句话
   3、无参数
    ()->{
        方法体
    }

this和super

  1. 无论是this还是super,都不可以在静态结构中使用
  2. 静态结构是属于类的,静态结构是优于对象存在的
  3. this和super必须有对象才能出现、必须得有实例

面试题:(输出优先级)

  1. 当没有继承关系,就一个类。静态块>实例块>构造器
  2. 当有继承关系。父类静态块>子类静态块>父类实例块>父类构造器>子类实例块>子类构造器

标签:27,07,静态,调用,实例,static,第五组,方法,public
来源: https://www.cnblogs.com/laizhedong/p/16526747.html