Java中的final和常量以及枚举

news2024/11/17 13:37:10

Java中的final和常量以及枚举

  • final的作用
  • 常量
    • 常量概述和基本作用
    • 常量做信息标志和分类
  • 枚举
    • 枚举的概念
    • 定义枚举类的格式
    • 枚举的特征

final的作用

1.final关键字是最终的意思,可以修饰(类、方法、变量)
2.修饰类:表明该类是最终类,不能被继承。

在这里插入图片描述
3.修饰方法:表明该方法是最终方法,不能被重写。
在这里插入图片描述
4.修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
在这里插入图片描述
final修饰变量的注意
1.final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
2.final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。

在这里插入图片描述

常量

常量概述和基本作用

1.常量是使用了public static final修饰的成员变量,必须有初始值,而且执行的过程中其值不能改变。
2.常量的作用和好处:可以用于做系统的配置信息,方便程序的维护,同时也能提高可读性。

public class Test3 {
    public static final String SCHOOL_NAME = "snow";
    public static final String LOOIN_NAME = "dream";
    public static final String PASS_WORD = "123456";
}

常量命名规范:英文单词全部大写,多个单词下划线链接起来。
常量的执行原理:
1.在编译阶段会进行“宏替换”,把使用常量的地方全部替换成真实的字面量。
2.这样做的好处是让使用常量的程序的执行性能与直接使用字面量是一样的。

常量做信息标志和分类

案例说明:
现在开发的超级玛丽游戏需要接受用户输入的四个方向的信号(上下左右),以便控制玛丽移动的方向。
选择常量做信息标志和分类:
代码可读性好,实现了软编码形式。

枚举

枚举的概念

1.枚举是Java中的一种特殊类型
2.枚举的作用:“是为了做信息的标志和信息的分类”。

定义枚举类的格式

修饰符 enum 枚举名称{
	第一行都是罗列枚举类实例的名称。
}
public enum Season{
	SPRING,SUMMER,AUTUMN,WINTER;
}

通过javap进行反编译后观察枚举特征:

Compiled from "Season.java"
public final class Season extends java.lang.Enum<Season>{
    public static final Season SPRING = new Season();
    public static final Season SUMMER = new Season();
    public static final Season AUTUMN = new Season();
    public static final Season WINTER = new Season();
    public static Season[] values();
    public static Season valueof(java.lang.String);
}

枚举的特征

1.枚举类都是继承了枚举类型:java.lang.Enum
2.枚举都是最终类,不可以被继承。
3.构造器的构造器都是私有的,枚举对外不能创建对象。
4.枚举类的第一行默认都是罗列枚举对象的名称的。
5.枚举类相当于是多例模式。

案例说明:
现在开发的超级玛丽游戏需要接受用户输入的四个方向的信号(上下左右),以便控制玛丽移动的方向。
选择枚举做信息标志和分类:
虽然可以实现代码可读性,但是入参值不受约束,代码相对不够严谨。
枚举做信息标志和分类:
代码可读性好,入参约束严谨,代码优雅,是最好的信息分类技术!建议使用!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之:链表

链表初体验之单链表 线性表 线性表"线性存储结构" —— 一根线能串起来的数组 存储到物理空间之中 数据需要有相同的数据类型 元素之间的关系 需要是“一对一” 两种存储方式“顺序” 和“链式”链表介绍 分为有头节点的链表和没有头节点的链表。 插入的时候&#xf…

化合物在高通量筛选中的作用

在 1985 年之前&#xff0c;先导物的筛选主要是通过人工进行的&#xff0c;每周处理的样本数量不过几百个&#xff0c;组合化学的出现使得科学家们获取化合物的方式发生了显著变化&#xff0c;他们可以在短时间内合成大量化合物。更重要的是&#xff0c;随着分子生物学和功能基…

【构建ML驱动的应用程序】第 1 章 :从产品目标到 ML 框架

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

SpringBoot框架详细教学保姆级说明

目录 文章目录1.1 简介1.2 特性1.3 四大核心2 springboot入门案例2.1 SpringBoot 项目开发步骤2.2 创建一个 Spring MVC 的 Spring BootController2.3 分析2.4 核心配置文件格式2.5 Spring Boot 前端使用 JSP3 SpringBoot框架Web开发3.1 Spring Boot 集成 MyBatis3.2 DAO 的其它…

D. Make It Round(math)

Problem - D - Codeforces 在Berlandia发生了通货膨胀&#xff0c;所以商店需要改变商品的价格。 商品n的当前价格已经给出。允许将该商品的价格提高k倍&#xff0c;1≤k≤m&#xff0c;k为整数。输出商品的最圆的可能的新价格。也就是在最后有最大数量的零的那个。 例如&…

开发工程师的面经

目录1. static关键字2. 多态是什么&#xff1f;3. ArrayList和LinkList的区别区别ArrayList的扩容机制4. Java是编译型还是解释型&#xff1f;5. 什么是编译&#xff1f;什么是解释&#xff1f;6. String str“abc” 和 String str new String(“abc”)的区别&#xff1f;7. i…

C\C++刷题ADY3

题目来源&#xff1a;力扣 1.第一题 203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 思路分析:&#xff08;不带哨兵位的头节点&#xff09; 每次去分析一个节点&#xff0c; 如果节点不是存的是6&#xff0c;就拿节点来尾插 如果节点存的不是6&#xff0c;就把节…

计算机毕业设计ssm+vue基本微信小程序的“香草屋”饮料奶茶点单小程序

项目介绍 随着社会的发展,互联网的迅速发展,5G时代的到来,智能手机的普及,人们的生活方式更加智能一体化,衣食住行也越来越简单快捷,人们的生活也更加趋向于智能化,一台智能手机可以解决生活中的各种难题。为了使人们的生活更加方便,于是各种生活小程序普遍产生, 随着微信小程序…

记一次 .NET 某自动化采集软件 崩溃分析

一&#xff1a;背景 1.讲故事 前段时间有位朋友找到我&#xff0c;说他的程序在客户的机器上跑着跑着会出现偶发卡死&#xff0c;然后就崩掉了&#xff0c;但在本地怎么也没复现&#xff0c;dump也抓到了&#xff0c;让我帮忙看下到底怎么回事&#xff0c;其实崩溃类的dump也…

java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计

java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm班级同学录网站》 该项目分为2个角色&#xff0c;管理员、用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、公告信息、校友风采、论坛信息&#xff0c;用…

vue项目中使用 NProgress 进度加载插件

场景&#xff1a;每次进入页面时&#xff0c;页面顶部都有一个加载条 下来说下这个效果怎么实现的 第一步&#xff1a;下载 NProgress 插件 npm install --save nprogress 第二步&#xff1a;导入 nprogress 并配置 切记&#xff1a;NP 都必须是大写 我是在路由页面中导入的 im…

搜索引擎项目开发过程以及重难点整理

目录认识搜索引擎搜索的核心思路倒排索引介绍项目简介模块管理构建索引模块数据库设计正排索引倒排索引程序入口类Indexer类扫描文档子模块FileScanner类构建文档子模块构建标题parseTitle方法构建urlparseUrl方法构建内容parseContent方法构建正排索引子模块正排索引实体类map…

Nginz静态资源缓存

缓存 缓存&#xff08;cache&#xff09;&#xff0c;原始意义是指访问速度比一般随机存取存储器&#xff08;RAM&#xff09;快的一种高速存储器&#xff0c;通常它不像系统主存那样使用DRAM技术&#xff0c;而使用昂贵但较快速的SRAM技术。缓存的设置是所有现代计算机系统发…

【前端-TypeScript】TypeScript学习思维导图-一图看完《TypeScript编程》

目录前言文章已收录至https://lichong.work&#xff0c;转载请注明原文链接。 ps&#xff1a;欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验&#x1f91d; 前言 现在&#xff0c;TypeScript 正在逐渐成为与前端框架以及 ES6 语法同一地位的基础工具&#xff0c;更多…

计算机毕业设计node+vue基于微信小程序的西餐外卖系统 uniapp 小程序

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,西餐外卖系统就是信息时代变革中的产物之一。 任何系统都要遵循系统…

力扣每日一题:808. 分汤 【dp动态规划】

有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作&#xff1a; 提供 100ml 的 汤A 和 0ml 的 汤B 。提供 75ml 的 汤A 和 25ml 的 汤B 。提供 50ml 的 汤A 和 50ml 的 汤B 。提供 25ml 的 汤A 和 75ml 的 汤B 。 当我们把汤分配给某人之后&#xff0c;汤…

CentOS8 安装 erlang 和 RabbitMQ

哈喽大家好&#xff0c;我是阿Q&#xff01; 最近正好用到了消息队列中的 RabbitMQ ,今天就先来个前味菜&#xff0c;总结一下它在 centos 内的安装。 环境&#xff1a;CentOS 8.0 64位 安装erlang 由于 rabbitmq 是基于 erlang 语言开发的&#xff0c;所以必须先安装 erlang…

大数据项目之电商数仓、日志采集Flume、source、channel、 sink、Kafka的三个架构

文章目录4. 用户行为数据采集模块4.3 日志采集Flume4.3.1 Kafka的三个架构4.3.1.1 source4.3.1.2 channel4.3.1.3 sink4.3.1.4 kafka source4.3.1.5 kafka sink4.3.1.6 kafka channel4.3.1.6.1 第一个结构4.3.1.6.2 第二个结构4.3.1.6.3 第三个结构4. 用户行为数据采集模块 4.…

CentOS7 离线部署 Python 项目

1.前言 主要过程如下&#xff1a; &#xff08;1&#xff09;创建项目环境&#xff0c;生成requirements.txt文件。&#xff08;如果已有可跳出&#xff09; &#xff08;2&#xff09;新建一个跟目标机器一样的操作系统&#xff0c;python环境的测试服务器&#xff0c;并下载…

【考研英语语法】名词性从句

0 导言 名词性从句&#xff0c;是指一个句子相当于名词来使用&#xff0c;放到另外一个句子中。通常情况下&#xff0c;名词在句子中主要作四种成分&#xff1a;宾语、表语、主语、同位语。因此&#xff0c;名词性从句就分成四种&#xff1a;宾语从句、表语从句、主语从句、同…