ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-27 23:02:20  阅读:141  来源: 互联网

标签:27 07 静态 代码 调用 蒋萍 实例 static 方法


面向对象(7)

目录

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

image

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修饰类

image

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

调用时,不用对象

image

4、static内存解析

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

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

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

尽量别用静态

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

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

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

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

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

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

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

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

6、静态方法怎么用

Arrays.toString()

Arrays.sort()

String.ValueOf()

啥时候用呢??

设计一些工具类时

其他

image

一些优化:

image

补充

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

  • 无论是super还是this都不能用在静态结构(包括代码块、方法)里 ,why ?????
    this和super分别都可以调属性和方法还有构造器,this.methodName 和 super.methodName 看上去是类.方法()
    静态结构是属于类的,静态结构是优先于对象存在的,

  • this和 super 什么时候出现呢??
    必须依赖于对象才能出现(必须有实例才能用)
    静态方法没有方法重写,继承或者接口对于静态方法来说毫无意义,那就和super无关
    静态结构出现的时候,对像还没产呢,而 this代表当前对象,

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

最后

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

标签:27,07,静态,代码,调用,蒋萍,实例,static,方法
来源: https://www.cnblogs.com/fulfill/p/16526878.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有