• 欢迎光临~

2022-07-27 第4组 蒋萍 代码块和static关键字

开发技术 开发技术 2022-07-27 次浏览

面向对象(7)

目录
  • 面向对象(7)
  • 1、代码块
  • 2、代码块分类
    • 2.1 静态代码块
    • 2.2 实例代码块
    • 面试:静态块优于其他,父类优于子类
  • 3、static关键字
    • 3.1 static修饰变量
    • 3.2 static修饰类
    • 3.3 static修饰方法 (也叫类方法或静态方法)
  • 4、static内存解析
  • 5、实例方法 和 静态方法的互相调用
  • 6、静态方法怎么用
  • 其他
  • 补充
  • 最后

类的内部结构:属性、方法、构造器、代码块、内部类

2022-07-27 第4组 蒋萍 代码块和static关键字

1、代码块

??: 初始化块,属于类的成员,是将一些逻辑语句封装在方法体中,(但不是方法体)通过{}包裹起来;代码块没方法名,没参数,没返回值,没返回权限,它不需要通过对象或类进行显式调用,它会在类加载或创建对象时隐式调用

2、代码块分类

2.1 静态代码块

静态变量:静态变量不能声明在内部类还有方法里,并且在内存中只有一个拷贝空间

  • 一个类被加载时被调用一次,做一些初始化工作
static{
    // 静态代码块,方法里能写啥,这里就能写啥
}
  • 静态代码块不能存在任何方法体中

  • 普通变量只能通过对象来调用,是不能放在静态代码块中的。

2.2 实例代码块

  • 每次创建对象都会被调用一次
public class name{
    {
        System.out.println("实例代码块");
    }   
}
  • 造两个对象时,静态代码块执行一次,实例代码块有几个对象执行几次

  • 两种代码块都可以在一个类里写多个(一般都不写多个)

面试:静态块优于其他,父类优于子类

(1)当没有继承关系(1个类):执行顺序为 静态块,实例块,构造器

public class CodeBlock {
    {
        System.out.println("实例代码块"); // 2
    }
    static {
        System.out.println("静态代码块"); // 1
    }
    public CodeBlock(){
        System.out.println("无参构造函数"); // 3
    }

    public static void main(String[] args) {
        new CodeBlock(); // 测试

    }
}

(2)有继承关系:父类静态块,子类静态块,父类实例块,父类构造,子类实例块,子类构造器

  • 静态块优于其他,父类优于子类

3、static关键字

  • 可以修饰属性、方法、代码块

  • static修饰的结构,不属于任何一个对象

3.1 static修饰变量

static 修饰的变量是常量吗??

不是,static 修饰的变量是唯一的,但不是不变的,加上final修饰的就是常量

  • static修饰的结构,不属于任何一个对象,不依赖于对象,没对象也能调用

调用时:类名.属性名

3.2 static修饰类

2022-07-27 第4组 蒋萍 代码块和static关键字

3.3 static修饰方法 (也叫类方法或静态方法)

调用时,不用对象

2022-07-27 第4组 蒋萍 代码块和static关键字

4、static内存解析

  • 垃圾回收会忽略static修饰的结构,就是用完不会被回收,static的变量或方法在方法区

  • 不属于某一实例对象,只存在于方法区,比如工具类

  • 调用静态结构:‘ 类名. ’的方式即可

尽量别用静态

5、实例方法 和 静态方法的互相调用

实例方法要通过 对象.方法名 的方式调用

  • 静态结构随着类的加载而加载;

​ 非静态结构随对象的创建而加载

  • 在Java中调用实例方法必须要有主体(要用实例方法就得用对象)

​ - 静态方法无论在哪,包括构造器,都是通过类名.方法名调用

​ 同一个类的静态调用静态时是可以省略类名的

  • 5、静态方法没有重写的概念

6、静态方法怎么用

Arrays.toString()

Arrays.sort()

String.ValueOf()

啥时候用呢??

设计一些工具类时

其他

2022-07-27 第4组 蒋萍 代码块和static关键字

一些优化:

2022-07-27 第4组 蒋萍 代码块和static关键字

补充

  • 接口中的常量默认有public final static

(开发中常量的声明基本上是这样的)

最后

今天晚上状态不错,继续努力 !!
自己敲代码实现记忆更深刻,感觉今天的导图做的不太好,会继续改进的。

程序员灯塔
转载请注明原文链接:2022-07-27 第4组 蒋萍 代码块和static关键字
喜欢 (0)