变量、常量与关键字详解

news/2024/4/19 14:39:09/文章来源:https://blog.csdn.net/Jz_Stu/article/details/136575191

变量、常量与关键字详解


文章目录

  • 变量、常量与关键字详解
  • 前言
  • 一、变量
  • 二、常量
    • 1.定义
    • 2.作用
    • 3.跟变量的区别
    • 4.使用场景
    • 5.示例
  • 关键字
    • 1.使用注意点
    • 2.关键字及其主要作用
      • 1)数据类型关键字:
      • 2)访问控制关键字:
      • 3)修饰符关键字:
      • 4)程序结构关键字:
      • 5)控制流程关键字:
      • 6)其他关键字:


前言

变量和常量都需要使用标识符进行命名,而关键字本身就是预定义的标识符,变量和常量都有数据类型,而关键字则没有数据类型的概念。本文会详细讲解三者之间的一些关联与区别。


一、变量

变量详解

二、常量

1.定义

常量,即常量值或固定值,在Java中通常使用final关键字进行定义。一旦为常量分配了值,那么这个值就不能再被改变。常量可以是任何基本数据类型(如int、double、char等),也可以是引用类型(如String、自定义类的对象等)。Java中的常量通常使用大写字母进行命名,以区分变量。

可以理解成变量的定义方式,然后加上final关键字进行修饰,因为final修饰时,

2.作用

  1. 提高代码可读性(语义明确性):常量在命名上通常使用大写字母,并且其值在程序运行期间是不可变的。这种命名和特性使得常量的语义非常明确,能够清晰地表达其代表的是一个固定不变的值。且使用有意义的常量名可以使得代码更加易于理解,即使在不熟悉代码具体实现的情况下,通过常量名也能大致了解其作用。
  2. 提高代码可读性和维护性:如果在程序中多处使用了某个固定的值,当这个值需要改变时,只需修改常量的定义,而无需搜索整个代码库进行替换。
  3. 提高代码安全性:通过将不应该被修改的值定义为常量,可以防止程序的其他部分意外或故意修改这些值。
  4. 优化性能:虽然现代Java虚拟机(JVM)会对变量和常量进行一系列优化,但在某些情况下,使用常量可能会带来性能上的优势。由于常量的值在编译时就已经确定,并且不会改变,JVM可能会对其进行特殊处理,如内联常量值或进行其他优化,以提高程序的运行效率。

3.跟变量的区别

常量和变量在值的可变性命名规范声明与赋值类型确定性以及作用域等方面存在明显的区别。

  1. 值的可变性:常量在程序运行期间的值是固定不变的,一旦初始化赋值后,就不能再被修改。而变量则可以在程序执行过程中被重新赋值,其值是可以改变的。
  2. 命名规范:按照Java编码规范,常量名一般要求全部大写,而变量名则要求小写。这有助于在代码中区分常量和变量。
  3. 声明与赋值:常量在声明时必须进行初始化赋值,并且只能赋值一次。这意味着一旦为常量分配了值,就不能再为其分配新的值。变量则可以在声明时初始化赋值,也可以在后续的代码中重新赋值。
  4. 类型确定性:常量的类型在定义时就必须确定,且之后不能更改。而变量的类型虽然也需要在声明时确定,但在某些情况下,可以在声明后再进行赋值时确定其具体的类型(例如使用局部变量类型推断)。
  5. 作用域:常量的作用域通常是全局的,特别是当它们被定义为静态常量时。而变量的作用域可以是全局的,也可以是局部的,这取决于它们在代码中的声明位置

4.使用场景

  1. 配置信息:如数据库连接信息(URL、用户名、密码等)、系统参数等,可以定义为常量,方便管理和修改。
  2. 数学常量:如π、e等数学中常用的常量,可以定义为Java常量,提高代码的可读性。
  3. 状态常量:表示某种状态或条件的常量,如表示性别的常量(MALE、FEMALE)等。

5.示例

public class ConstantExample {  // 定义数学常量PI  public static final double PI = 3.141592653589793;  // 定义状态常量  public static final String MALE = "Male";  public static final String FEMALE = "Female";  public static void main(String[] args) {  // 使用常量  double area = PI * 5 * 5;  System.out.println("The area of the circle is: " + area);  String gender = MALE;  System.out.println("The gender is: " + gender);  }  
}

在上面的示例中,因为圆周率是一个固定的值,且男生女生也是固定的,后续不需要改动,所以我们可以定义为一个数学常量PI和两个状态常量MALE、FEMALE。在main方法中,就可以直接使用这些常量。static和final关键字的作用看下文。


关键字

1.使用注意点

  1. 关键字不能用作变量名、方法名、类名、包名和参数
  2. 主要用于表示数据类型、程序结构、修饰符以及控制流程

2.关键字及其主要作用

关键字比较多,就不举例子了,在之前以及后续的例子代码中都会存在一部分内容。

1)数据类型关键字:

  1. boolean:用于声明布尔类型的变量。
  2. byte、short、int、long:用于声明不同大小的整数类型的变量。
  3. float、double:用于声明浮点类型的变量。
  4. char:用于声明字符类型的变量。

2)访问控制关键字:

  1. public:表示公共权限,可以被任意类访问。
  2. protected:表示受保护的权限,可以被同包类访问,或者如果是该类的子类也可以访问。
  3. default(默认):表示同包权限,只能在本类以及同包中的不同类访问。
  4. private:表示私有权限,只能在本类中访问。

3)修饰符关键字:

  1. static:用于修饰类的属性、方法、代码块和内部类,表示它们属于类本身而不是类的实例。
  2. final:用于修饰类、方法、变量和参数,表示它们不能被修改(对于类和方法)或重新赋值(对于变量)。
  3. abstract:用于修饰类和方法,表示它们是抽象的,不能被实例化或调用。
  4. native:用于修饰方法,表示该方法是用其他语言实现的。
  5. synchronized:用于修饰方法或代码块,表示同一时间只能有一个线程可以执行某个代码块或方法。
  6. transient:用于修饰字段,表示该字段不应被序列化。
  7. volatile:用于修饰变量,表示该变量可能会被多个线程异步修改。

4)程序结构关键字:

  1. class:用于声明一个类。
  2. interface:用于声明一个接口。
  3. enum:用于声明一个枚举类型。
  4. extends:用于表示一个类是另一个类的子类。
  5. implements:用于表示一个类实现了某个接口。

5)控制流程关键字:

  1. if、else、switch、case、default:用于条件判断。
  2. for、while、do-while:用于循环控制。
  3. break、continue:用于中断或跳过循环中的某些迭代。
  4. return:用于从方法中返回值。

6)其他关键字:

  1. package:用于声明类或接口所属的包。
  2. import:用于导入其他包中的类或接口。
  3. new:用于创建类的实例。
  4. this:用于引用当前对象的实例。
  5. super:用于引用父类的实例。
  6. instanceof:用于测试一个对象是否是指定类型的实例。
  7. void:用于表示方法不返回任何值。
  8. try、catch、finally、throw、throws:用于异常处理。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中SpringBoot四大核心组件是什么

一、Spring Boot Starter 1.1 Starter的应用示例 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency><groupId>org.mybatis.sprin…

深度学习与人类的智能交互:迈向自然与高效的人机新纪元

引言 随着科技的飞速发展&#xff0c;深度学习作为人工智能领域的一颗璀璨明珠&#xff0c;正日益展现出其在模拟人类认知和感知过程中的强大能力。本文旨在探讨深度学习如何日益逼近人类智能的边界&#xff0c;并通过模拟人类的感知系统&#xff0c;使机器能更深入地理解和解…

高级语言讲义2016计专(仅高级语言部分)

1.斐波那契序列的第n项可以表示成以下形式&#xff0c;编写一个非递归函数&#xff0c;返回该数列的第n项的数值 #include <stdio.h>int func(int n) {if(n1||n2)return 1;int p1,q1,num;for(int i3; i<n; i) {numpq;qp;pnum;}return num; } 2.在MXN的二维数组A中&am…

瑞_23种设计模式_模板方法模式

文章目录 1 模板方法模式&#xff08;Template Pattern&#xff09; ★ 钩子函数1.1 介绍1.2 概述1.3 模板方法模式的结构1.4 模板方法模式的优缺点1.5 模板方法模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;InputStre…

【测试工具系列】压测用Jmeter还是LoadRunner?还是其他?

说起JMeter&#xff0c;估计很多测试人员都耳熟能详。它小巧、开源&#xff0c;还能支持多种协议的接口和性能测试&#xff0c;所以在测试圈儿里很受欢迎&#xff0c;也是测试人员常用的工具&#xff0c;但是在企业级性能场景下可能会有性能瓶颈&#xff0c;更适合测试自己使用…

Grafana二次开发环境搭建

1 Grafana环境搭建 1.1 搭建后端服务 下载windows安装版文件grafana.com 1&#xff09;选择版本号&#xff1a;此处我选的8.3.3版本 2&#xff09;安装完成后&#xff0c;请记住安装目录 &#xff0c;我的是在 D:\software\Gragana833 安装完成后会自动运行, 3&#xff09;此…

2024年软考重大改革

中国计算机技术职业资格网 考试日期 考试级别 考试资格名称 5月25日至28日 高级 系统分析师 系统架构设计师 信息系统项目管理师 中级 软件设计师 网络工程师 软件评测师 电子商务设计师 嵌入式系统设计师 数据库系统工程师 信息系统管理工程师 初级 程序员 …

MySQL之体系结构和基础管理

前言 本文以linux系统的MySQL为例详细介绍MySQL的体系结构&#xff0c;因为在实际生产环境中MySQL的运行环境都是linux系统。同时介绍MySQL的基础管理&#xff0c;包括用户管理和权限管理等。 MySQL体系结构 MySQL客户端/服务器工作模型 MySQL是C/S架构&#xff0c;工作模型…

物联网,智慧城市的数字化转型引擎

随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动智慧城市建设的关键力量。物联网技术通过连接各种设备和系统&#xff0c;实现数据的实时采集、传输和处理&#xff0c;为城市的智能化管理提供了强大的支持。在数字化转型的浪潮中&#xff0c;物联网…

VUE_nuxt启动只能通过localhost访问,ip访问不到:问题解决

修改项目根目录下的 package.json "config": {"nuxt": {"host": "0.0.0.0","port": "3000"} } 这样项目启动后就可以通过ip进行访问了

AutoDev 自定义 Agent:快速接入内部 AI Agent,构建 IDE 即 AI 辅助研发中心

在开源 AI IDE 插件 AutoDev 的 #51 issue 中&#xff0c;我们设计了 AutoDev 的 AI Agent 能力&#xff0c;半年后我们终于交付了这个功能。 在 AutoDev 1.7.0 中&#xff0c;你将可以接入内部的 AI Agent&#xff0c;并将其无缝与现有的 AI 辅助能力结合在一起。 本文将使用 …

使用awk和正则表达式过滤文本或字符串 - 详细指南和示例

当我们在 Linux 中运行某些命令来读取或编辑字符串或文件中的文本时&#xff0c;我们经常尝试将输出过滤到感兴趣的特定部分。这就是使用正则表达式派上用场的地方。 什么是正则表达式&#xff1f; 正则表达式可以定义为表示多个字符序列的字符串。关于正则表达式最重要的事情之…

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】&#xff08;底层operator【】函数&#xff09; ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…

Python编程实验六:面向对象应用

目录 一、实验目的与要求 二、实验内容 三、主要程序清单和程序运行结果 第1题 第2题 四、实验结果分析与体会 一、实验目的与要求 &#xff08;1&#xff09;通过本次实验&#xff0c;学生应掌握类的定义与对象的创建、类的继承与方法的覆盖&#xff1b; &#xff08;2…

接收端编程、UDP编程练习、wireshrak抓包工具、UDP包头

我要成为嵌入式高手之3月6日Linux高编第十六天&#xff01;&#xff01; ———————————————————————————— 学习笔记 接收端 recvfrom #include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buf, si…

一文学会搭建 cli 脚手架工具

文章目录 设置工具命令package.json bin 字段注释&#xff1a;#!/usr/bin/env node设置环境变量 接收命令选项参数process 实现commander 命令行交互&#xff1a;inquirer下载项目模板&#xff1a;download-git-repo执行额外命令&#xff1a;自动安装依赖child_processexeca 体…

Mybatis-Plus——05,乐观锁(新注解)

乐观锁&#xff08;新注解&#xff09; 一、数据库添加一个字段二、实体类添加version注解三、注册乐观锁插件四、测试一下4.1成功的乐观锁4.2失败的乐观锁————————创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ 乐观锁实现方…

Flask python开发篇: 写一个简单的接口

第一步&#xff1a;新建flask项目 参考使用pycharm新建一个项目 打开pycharm&#xff0c;根据下面图中箭头顺序&#xff0c;新建一个flask的项目&#xff1b; 第二步&#xff1a;运行项目&#xff0c; 安装成功以后&#xff0c;会有个app.py文件&#xff0c;打开以后&#…

Kali Linux 2024.1

Kali Linux 2024.1刚刚发布&#xff0c;标志着这个备受欢迎的安全重点Linux发行版在今年的首次重大更新。以其先进的渗透测试和安全审计功能而闻名&#xff0c;它是安全专业人员和爱好者的首选工具。 Kali 2024.1 亮点 本次发布由 Linux 内核 6.6 提供支持&#xff0c;突出了…

借着ChatGPT的人机交互聊聊长连接

ChatGPT这两年可谓风靡全球&#xff0c;尤其是最近Sora视频模型的横空出世以及claude 3模型所具备的浅意识&#xff0c;更是像打开了新世界的大门。本文就从ChatGPT的网页聊天开始聊起&#xff08;有蹭热度之嫌&#xff0c;哈哈&#xff09;&#xff0c;聊聊长连接的发展历程和…