JavaSE_关键字 接口 代码块 枚举

1 Java中的关键字

1.1 static关键字

static特点 :
  • 静态成员被所在类的所有对象共享
  • 随着类的加载而加载 , 优先于对象存在
  • 可以通过对象调用 , 也可以通过类名调用 , 建议使用类名
static关键字的注意事项
  • 静态方法中只能调用静态成员(因为静态成员随着类的加载而加载,非静态成员随着对象的创建而加载,所以要想访问非静态成员可以通过创建对象来调用)
  • 非静态方法中可以调用任何成员(非静态成员变量,方法, 静态成员变量,方法)
  • 静态方法中不能存在this关键字(因为this代表的是对象,静态成员在加载时还没有对象)
  • static一般用在工具类中的方法上
局部变量 成员变量 静态变量
  • 局部变量属于方法,成员变量属于对象,静态变量属于类

1.2 final关键字

  • final关键字 : 翻译中文代表最终的意思 , 是java的一个关键字 也是一个修饰符 , 可以修饰类 , 可以修饰方法 , 也可以修饰变量
  • final关键字修饰的特点
  • final修饰的类 : 不能被继承 , 没有子类
  • fina修饰的方法 : 不能被重写
  • final修饰的变量 :
    • 基本数据类型 : 值不能改变
    • 引用数据类型 : 地址不可发生改变 , 对象的属性可改变
    • 注意 :
    • 被final修饰的变量 , 我们叫做自定义常量 , 命名规范 : 每个字母需要大写 , 多个单词之间用下划线分割
    • final修饰成员变量需要注意初始化时机的问题 , 1) 直接赋值 , 2) 在构造方法执行完毕前赋值

1.3 Java中的权限修饰符

  • public — protected — 默认的 — private
    JavaSE_关键字 接口 代码块 枚举

2 代码块

2.1 构造代码块

  • 构造方法块 : 用一对大括号表示, 定义在类中方法外
  • 执行时机 : 每次构造方法执行前, 都会执行构造代码块
  • 作用 : 抽取构造方法中共性内容

2.2 静态代码块

  • 静态代码块 : 在一对大括号前加上static关键字 , 定义在类中方法外
  • 执行时机 : 随着类的加载而加载 , 只加载一次
  • 作用 : 一般用于给静态成员初始化

2.3 局部代码块

JavaSE_关键字 接口 代码块 枚举
怎么找一个变量的作用域?
  • 变量所在的那对大括号即是作用域范围

3 接口

3.1 接口的定义和特点

  • 接口的子类我们叫做实现类
  • 要么重写接口中所有的抽象方法
  • 要么实现类是一个抽象类
  • 注意 : 类与接口的关系是实现关系 , 一个类可以实现多个接口,调用逗号分隔 , 还可以继承一个类的同时 , 实现多个接口 (继承只能继承一个类,不能多继承,可以多层继承)

3.2 接口的成员特点

  • 成员变量 : 都是常量 , 默认修饰符 public static final ,它们三个的书写顺序可以随意,但是一般权限修饰符写在最前面,static写在权限修饰符后面,其余的写在static后面
  • 构造方法 : 没有构造方法
  • 成员方法 : JDK8版本前 只能是抽象方法 , 默认修饰符public abstract

3.5 接口中成员方法的特点

  • DK8版本之前 : 只能是抽象方法
  • JDK8版本 :
  • 默认方法
    • JDK8可以在接口中定义非抽象方法(带有方法体的方法) , 需要使用default进行修饰 , 其实就是默认方法
    • 作用 : 解决接口升级的问题
    • 格式 : public default 返回值类型 方法名(参数) { … }
    • 注意事项 :
    • 默认方法不是抽象方法 , 可以继承 , 也可以重写 , 重写需要去掉default关键字
    • public 可以省略 , default不能省略
    • 如果实现类实现了多个接口 , 有相同的方法声明 , 那么实现类必须重写该方法
  • 静态方法
    • JDK8可以在接口中定义静态方法 , 也是有方法体的方法
    • 作用 : 方便调用此功能
    • 格式 : public static 返回值类型 方法名(参数){ … }
    • 注意事项
    • 静态方法只能通过接口名调用 , 不能通过实现类名字和对象调用
    • public可以省略 , static不能省略
  • JDK9版本 :
  • 私有方法
    • JDK9中新增私有方法
    • 作用 : 抽取默认方法中共性内容
    • 格式 : private 返回值类型 方法名(参数){ … }
    • 注意 : 要想抽取静态方法中的共性内容 , 需要对私有方法加上关键字static
  • 接口可以单继承,也可以多继承,还可以多层继承

4 枚举

  • 枚举 : 当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型
  • 作用 : 更贴切 , 加见名之意
  • 定义 : public enum 枚举名{ … }
  • 使用 : 通过枚举类型名直接引用枚举项即可,例如Sex.BOY、Sex.GIRL
    注意 : 每个枚举项都相当于枚举的对象
  • 案例代码
package com.ps.enum_demo;

public enum Sex {
    // 每一个枚举项都是枚举的对象
    GIRL("女孩"), BOY("男孩");

    // 成员变量
    private String name;

    // 空参构造方法
    private Sex() {
    }

    // 有参构造方法
    private Sex(String name) {
        this.name = name;
    }

    // 成员方法
    public String getName() {
        return name;
    }
}

class Test {
    public static void main(String[] args) {
        System.out.println(Sex.GIRL.getName());
        System.out.println(Sex.BOY.getName());
    }
}
  • 枚举的本质 :
  • 枚举其实本质上是一个类,每一个枚举项是本枚举类类型的一个对象。我们可以使用JDK提供的反编译命令,将枚举的字节码进行反编译查看
    • 枚举本质上就是最终类
    • 枚举项,就是枚举类的对象,而且是静态的常量。
    • 有私有的构造方法
    • 静态代码块
    • 继承了lang包下的Enum
  • 组成部分 :
  • 构造器,成员方法,成员变量等 , 但是定义的成分一定要在枚举项之后,而且最后一个枚举项必须要有分号结束。

Original: https://www.cnblogs.com/epicenter/p/16310749.html
Author: Epicenter
Title: JavaSE_关键字 接口 代码块 枚举

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592387/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 「Java分享客栈」Nacos配置中心称王称霸,我Apollo一生也不弱于人!

    前言 Apollo又称阿波罗配置中心,在前两年还是挺火的,但阿里SpringCloud套件席卷国内之后,nacos就成为了最被亲睐的分布式配置中心,nacos是配置中心和注册中心二…

    Java 2023年6月9日
    0138
  • SpringBoot实现自定义路由覆盖

    背景 公司最近有一个项目二期需要对一些功能进行改造,涉及部分框架内置业务接口个性化定制,兼容老接口功能并且增加一部分新的数据返回,由于前端调用这些接口分布较多且较为零碎,修改测试成…

    Java 2023年6月15日
    076
  • 研究一下JAVA robot类

    什么是机器人工具类 此工具类与qq机器人并 不相同,可以理解为 键盘与鼠标事件, 代替人对电脑执行操作 具体使用 /** * Constructs a Robot object i…

    Java 2023年6月7日
    082
  • 力扣刷题之路——-统计数组中的元素

    参考刷题顺序: 力扣刷题顺序 涉及题目 645. 错误的集合 697.数组的度 448.找到所有数组中消失的数字 442.数组中重复的数据 41.缺失的第一个正数 274.H指数 …

    Java 2023年6月5日
    0106
  • Caused by: java.sql.SQLSyntaxErrorException: Unknown column ‘name’ in ‘field list’

    写代码做单元测试的时候,突然提示” Caused by: java.sql.SQLSyntaxErrorException: Unknown column &#8216…

    Java 2023年6月5日
    0103
  • java 导出word 包含echarts图表

    需求是导出word,里面有数据统计图表。 要从后端直接导出图表的话,思路是这样的: 先通过echarts生成图片,通过phantomjs 截图,将图片暂存在本地,再将图片转换成ba…

    Java 2023年6月13日
    083
  • Fizz网关入门教程-路由初体验

    概念 路由就是定义网关如何处理请求,分反向代理、服务发现、服务编排三种类型。 配置 路由的定义可通过网关管理后台完成: 下面分别介绍反向代理和服务发现路由的配置,设网关部署为 1….

    Java 2023年6月9日
    080
  • Spring Cloud Gateway 路由定位器

    1 时刻与技术进步,每天一点滴,日久一大步!!! 本博客只为记录,用于学习,如有冒犯,请私信于我。 Original: https://www.cnblogs.com/myitne…

    Java 2023年5月30日
    060
  • shiro

    关于shiro:不依赖容器! 依赖 推荐插件:Ini(shiro.ini) Authentication(认证):用户身份识别,通常被称为用户”登录” Au…

    Java 2023年6月13日
    075
  • OSGI企业应用开发(十五)基于Spring、Mybatis、Spring MVC实现一个登录应用

    前面文章中,我们已经完成了OSGI应用中Spring、Mybatis、Spring MVC的整合,本篇文章我们就在这个基础上来完成一个简单的登录应用,其中用户名和密码需要从数据库中…

    Java 2023年5月30日
    0100
  • C# 线程运行的机制和原理

    BackgroundWorker类可以简化线程在后台执行任务的工作,它具有以下几种主要成员: 属性:WorkReportsProgress,WorkerSupportsCancel…

    Java 2023年5月29日
    060
  • Java基础(1)——ThreadLocal

    1.1. ThreadLocal ThreadLocal是一个泛型类,当我们在一个类中声明一个字段: private ThreadLocal<foo> threadLo…

    Java 2023年6月10日
    079
  • Netty源码分析之ByteBuf(一)—ByteBuf中API及类型概述

    ByteBuf是Netty中主要的数据容器与操作工具,也是Netty内存管理优化的具体实现,本章我们先从整体上对ByteBuf进行一个概述; AbstractByteBuf是整个B…

    Java 2023年6月9日
    081
  • JavaMail 网易邮件发送demo-发送带附件的邮件

    使用Java应用程序发送 E-mail,需要在机子上安装 JavaMail API 和Java Activation Framework (JAF) 。 可以从 Java 网站下载…

    Java 2023年5月29日
    093
  • Nginx如何解决跨域问题?

    前言 H5的开发中一定离不开的一个问题就是跨域,当协议、端口、域名其中一项不同时就会跨域,解决跨域的方法也有很多,开发中常用的例如node转发、CORS、还有就是Nginx配置转发…

    Java 2023年5月30日
    075
  • Spring Cloud认知学习(二):Ribbon使用

    Ribbon负载均衡 简单使用步骤: 1.新建模块,用于负载均衡 2.修改模块代码: 3.启动模块 4.修改消费者模块 负载均衡算法: 自定义负载规则: 💡接上回Spring Cl…

    Java 2023年5月30日
    071
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球