当前位置: 首页 > news >正文

六、变量与常量

变量与常量

  • 1.变量与常量
    • 1.1标识符和关键字
      • 1.1.1.标识符
      • 1.1.2.关键字
    • 1.2.声明变量
    • 1.3.声明常量
    • 1.4.变量的有效范围
      • 1.4.1.成员变量
      • 1.4.2.局部变量
    • 1.5.训练1
    • 1.6.训练2

——————————————————————————————————————————————————

1.变量与常量

在程序执行过程中, 其值不能被改变的量称为常量,其值能被改变的量称为变量。变量与常量的命名都必须使用合法的标识符。

——————————————————————————————————————————————————

1.1标识符和关键字

——————————————————————————————————————————————————

1.1.1.标识符

标识符可以简单地被理解为一个名字,它是用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。

ava语言规定标识符由任意顺序的字母、下画线(_)、美元符号($)和数字组成,并且第一个字符不能是数字。标识符不能是Java中的关键字(保留字)。

在Java语言中,标识符中的字母是严格区分大小写的,如good和Good是不同的两个标识符。Java语言使用Unicode标准字符集,最多可以标识65535个字符。因此,Java语言中的字母不仅包括通常的拉丁文字a、b、c等,还包括汉语、日语以及其他许多语言中的文字。

——————————————————————————————————————————————————

1.1.2.关键字

关键字又称保留字,是Java语言中已经被赋予特定意义的一些单词,不可以把这些单词作为标识符来使用。

关键字又称保留字,是Java语言中已经被赋予特定意义的一些单词,不可以把这些单词作为标识符来使用。

在这里插入图片描述

——————————————————————————————————————————————————

1.2.声明变量

声明变量就是要告诉编译器(compiler)这个变量的数据类型,这样编译器才知道需要配置多少空间给它,以及它能存放什么样的数据。

在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。为了便于操作,给这个空间取个名字,称为变量名。变量名必须是合法的标识符。内存空间内的值就是变量值。在声明变量时可以不用赋值,也可以直接赋予初值。

例如:声明一个整数类型变量和声明一个字符类型变量,代码如下:

    int age;                                  //声明int型变量char char1 = 'r';                         //声明char型变量并赋值

编写以上程序代码,究竟会产生什么样的效果呢?要了解这个问题,就需要对变量的内存配置有一定的认识。

系统的内存大略可被分为3个区域,即系统(OS)区、程序(program)区和数据(data)区。当执行程序时,程序代码会被加载到内存的程序区中,数据暂时被存储在数据区中。假设上述两个变量被定义在方法体中,则程序被加载到程序区中。当执行此行程序代码时,会在数据区配置空间给出这两个变量。

在这里插入图片描述

变量名必须是一个有效的标识符。
变量名不可以使用Java中的关键字。
变量名不能重复。
应选择有意义的单词作为变量名。

Java 10提供了一个方便好用的新特性:使用var声明局部变量。使用var声明局部变量的语法如下:

   var 变量名称 =  值

需要注意的是,var是关键字,它相当于一种动态类型。编译器会根据赋给变量的值推断出变量的类型,因此使用var声明局部变量时必须赋予值。

例如,在main()方法中,先使用var声明一个变量,变量的值为“好好学习,天天向上”,再使用输出语句输出这个变量的值。代码如下:

在这里插入图片描述
在这里插入图片描述

var不能用于声明成员变量,使用var声明的局部变量不能作为方法的返回值。

——————————————————————————————————————————————————

1.3.声明常量

在程序运行过程中一直不会改变的量被称为常量(constant),通常也被称为“final变量”。常量在整个程序中只能被赋值一次。在为所有的对象共享值时,常量是非常有用的。

在Java语言中声明一个常量,除了要指定数据类型,还需要通过final关键字进行限定。声明常量的标准语法如下:

    final 数据类型 常量名称 [= 值]

常量名通常使用大写字母,但这并不是必需的。很多Java程序员使用大写字母表示常量,是为了清楚地表明正在使用常量。

例如:声明常量π,(程序中用PI表示),代码如下:

    final double PI = 3.1415926D;

当变量被final关键字修饰时,该变量就变成了常量,必须在定义时就设定它的初值,否则将会产生编译错误。

例如:尝试给常量赋值,观察是否会发生错误。

在这里插入图片描述
在这里插入图片描述

从这个结果中可以看到,Part类被运行后发生了错误,异常日志中记载Part类出现编译问题,此编译问题正是常量number被二次赋值。

——————————————————————————————————————————————————

1.4.变量的有效范围

由于变量被定义出来后只是暂存在内存中,等到程序执行到某一个点,该变量会被释放掉,也就是说变量有它的生命周期。

因此,变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。在程序中,一般会根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。

——————————————————————————————————————————————————

1.4.1.成员变量

在类体中所声明的变量被称为成员变量,成员变量在整个类中都有效。类的成员变量又可分为两种,即静态变量和实例变量。例如代码:

    class Demo {int x = 45;static int y = 90          }

其中,x为实例变量,y为静态变量(也被称为类变量)。如果在成员变量的类型前面加上关键字static,这样的成员变量被称为静态变量。静态变量的有效范围可以跨类,甚至可到达整个应用程序之内。静态变量除了能在声明它的类内存取,还能直接以“类名.静态变量”的方式在其他类内使用。

——————————————————————————————————————————————————

1.4.2.局部变量

在类的方法体中声明的变量(方法内部定义,在“{”与“}”之间的代码中声明的变量)称为局部变量。局部变量只在当前代码块中有效,也就是只能在“{”与“}”之间的代码中使用它。

局部变量的生命周期取决于方法,当方法被调用时,Java虚拟机会为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将会被销毁。

在这里插入图片描述

例如:把成员变量“排挤掉”的局部变量

在项目中创建类Val,并分别定义名称相同的成员变量与局部变量,当名称相同时成员变量将被隐藏。

在这里插入图片描述
在这里插入图片描述

——————————————————————————————————————————————————

1.5.训练1

例:比较字符和整数 比较’g’和103是否相等。

思路:字符和数字做比较,肯定不能直接做比较的。需要把g字符型根据unicode表转换成整数型在进行比较。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

——————————————————————————————————————————————————

1.6.训练2

例:输出连续的字符 在控制台中输出“ABCDEFG”。

思路:以字符串String型进行输出

在这里插入图片描述
在这里插入图片描述

相关文章:

六、变量与常量

变量与常量 1.变量与常量1.1标识符和关键字1.1.1.标识符1.1.2.关键字 1.2.声明变量1.3.声明常量1.4.变量的有效范围1.4.1.成员变量1.4.2.局部变量 1.5.训练11.6.训练2 —————————————————————————————————————————————————— …...

Fork() 函数:“父” 与 “子” 进程的交互(进程的创建)

阅读导航 前言一、fork函数初识1. 基本概念2. fork函数返回值 二、fork函数的写时拷贝三、总结温馨提示 前言 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C的一些知识,也学习了一些Linux的基本操作,也了解并…...

JupyterNotebook设置Python环境的方法步骤

不多说,看链接。 https://stackoverflow.com/questions/39604271/conda-environments-not-showing-up-in-jupyter-notebook conda activate myenv pip install ipykernel python -m ipykernel install --user --name myenv --display-name "Python (myenv)&q…...

腾讯云阿里云云服务器 Linux 操作系统 BT 宝塔面板快速建站教程

宝塔面板概述 宝塔面板是一款服务器管理软件,支持Windows和Linux系统,可以通过Web端轻松管理服务器,提升运维效率。总体来说,宝塔面板具有操作简单、功能丰富、安全可靠等特点,是一款非常实用的服务器管理软件。 宝塔…...

【Linux】死锁理解

什么是死锁 因为资源调度的方式不合理或者资源的稀缺性,导致进程间的相互等待。 死锁的四个必要条件:互斥条件,请求和保持条件,环路等待条件,不可剥夺条件。 死锁的预防只要破坏死锁产生的四个必要条件。通常采用预…...

基于Java所涉及的人工智能的框架

11 References: [1] Java中人工智能的框架_永远的12的博客-CSDN博客...

【力扣】三角形最小路径和

目录 题目 例子 示例 1: 示例 2: 前言 思路 思想 代码 调用的函数 主函数 所有代码 力扣提交的代码 运行结果 小结 题目 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结…...

【Linux】指针常量和常量指针

这个是指针常量,不能修改指向【其实就是引用的原型】:可以理解为const是否限制了星号 这个是常量指针,可以改指向,不能改值:...

LCP 22.黑白方格画

​题目来源: leetcode题目,网址:LCP 22. 黑白方格画 - 力扣(LeetCode) 解题思路: 分别计算当涂0行,1行,2行.......时能否满足要求,若能&#xff…...

Java并发编程第8讲——ThreadLocal详解

ThreadLocal无论是在项目开发还是面试中都会经常碰到,它的重要性可见一斑,本篇文章就从ThreadLocal的使用、实现原理、核心方法的源码、内存泄漏问题等展开介绍一下。 一、什么是ThreadLocal ThreadLocal是java.lang下面的一个类,在JDK 1.2版…...

2023复旦大学计算机科学技术(网络空间安全)保研记录

BG:中九rank前5%、科研经历少、无竞赛 复旦大学计算机科学与技术--网络空间安全方向,参营4天(6.26-6.29),管午饭,住宿自理 6.26--报道听会,6.27--听会+实验室参观 给了…...

linux系统通过docker安装python的jieba,如何找到jieba路径替换分词文件

1、安装python镜像 python镜像名为 jetz_python3.7.131、进入容器 首次安装镜像后,容器启动,进入容器中,其中py37是容器名称,后面会一直用到 docker run -it --name py37 jetz_python3.7.13 /bin/bash如果进入过容器退出了,而容器已存在,上面的的 命令会报错,直接根…...

Python Functions-函数

目录 创建函数 调用函数 参数还是自变量? 参数数量 任意参数,*args 关键字参数 任意关键字参数,**kwargs 默认参数值 将列表作为参数传递 The pass Statement 递归 函数是一个只有在被调用时才运行的代码块。 可以将称为参数的数…...

【人工智能】机器学习的入门与提升

目录 1.入门 1.1.从何处开始 1.2.数据集 1.3.数据类型 2.平均中位数模式 2.1.均值、中值和众数 2.2.均值 2.2.1.实例 2.2.2.运行结果 2.3.中值 2.3.1.实例 2.3.2.运行结果 2.3.3.实例 2.3.4.运行结果 2.4.众数 2.4.1.实例 2.4.2.运行结果 2.5.章节总结 3.标准…...

WEB漏洞原理之---【XMLXXE利用检测绕过】

文章目录 1、概述1.1、XML概念1.2、XML与HTML的主要差异1.3、XML代码示例 2、靶场演示2.1、Pikachu靶场--XML数据传输测试玩法-1-读取文件玩法-2-内网探针或攻击内网应用(触发漏洞地址)玩法-3-RCE引入外部实体DTD无回显-读取文件开启phpstudy--apache日志…...

element-table排序icon没有点亮

<el-table :data"tableData" ref"tableRef"border :sort"defaultSort":default-sort"defaultSort"><el-table-column sortable :sort-orders"sortOrder" prop"date" label"日期"> </el-…...

传统的经典问题 Java 的 Interface 是干什么的

传统的经典问题 Java 的 Interface 是干什么 解答 上面的这个问题应该还是比较好回答的吧。 只要你做过 Java &#xff0c;通常 Interface 的问题多多少少会遇到&#xff0c;而且可能会遇到一大堆。 在JAVA编程语言中是一个抽象类型&#xff08;Abstract Type&#xff09;&…...

Linux 文件 目录管理

Linux 文件 基本属性 Linux 系统是一种典型的多用户系统&#xff0c;为了保护系统的安全性&#xff0c;不同的用户拥有不同的地位和权限。Linux 系统对不同的用户访问同一文件&#xff08;包括目录文件&#xff09;的权限做了不同的规定。 可以使用命令&#xff1a;ll 或 ls –…...

QT信号槽实现原理

定义Q_OBJECT宏 在宏中声明了几个重要的成员变量及成员函数&#xff0c;包括声明了一个只读的静态成员变量static MetaObject&#xff0c;以及3个public的成员函数 static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void …...

7-7 求鸡兔数量

老张家养了很多鸡和兔&#xff0c;圈养在一个笼子里&#xff0c;清早起来老张站在笼子旁边数了数头的个数&#xff0c;蹲下来又数了数脚的个数&#xff0c;你能帮他快速算出来鸡兔各有多少只吗&#xff1f;如实在算不出来&#xff0c; 就提示“error” 输入格式: 输入头的个数…...

阿里gte-base-zh镜像实测:一键部署,小白也能玩转语义理解

阿里gte-base-zh镜像实测&#xff1a;一键部署&#xff0c;小白也能玩转语义理解 1. 为什么选择gte-base-zh模型&#xff1f; 1.1 专为中文优化的语义理解模型 gte-base-zh是阿里巴巴达摩院专门针对中文场景训练的文本嵌入模型。与通用模型不同&#xff0c;它基于BERT架构进…...

微信可以用龙虾了!LobsterAI有道龙虾成国内首批接入微信“桌面级Agent”

3月22日&#xff0c;微信官宣 ClawBot 插件正式上线。被誉为“中国版OpenClaw”的桌面级智能体Agent、国内大厂首个开源龙虾——LobsterAI有道龙虾发布新版&#xff0c;率先实现微信接入。用户现可通过微信直接向 Lobster AI下达指令并获取执行结果。此前&#xff0c;LobsterAI…...

锂离子电池恒流恒压充电Simulink仿真模型(CC-CV)及其电路结构与充电过程说明

锂离子电池恒流恒压充电Simulink仿真模型&#xff08;CC-CV&#xff09; 电路结构包括&#xff1a;直流电压源、DC/DC变换器、锂离子电池、CCCV控制系统 [hot]赠送2000多字的说明文档和参考文献&#xff0c;帮助您更快理解 恒流恒压充电过程&#xff1a; [1]在CC阶段对电池施加…...

保姆级教程:用FFmpeg+Nginx把监控摄像头RTSP流转成HLS网页播放

从RTSP到HLS&#xff1a;零基础构建浏览器兼容的监控视频流系统 在智能安防和物联网应用场景中&#xff0c;监控摄像头产生的视频流通常采用RTSP协议传输&#xff0c;但现代浏览器却无法直接播放这种流媒体格式。本文将手把手带您实现RTSP到HLS的完整转换方案&#xff0c;通过F…...

双向Buck-Boost变换器:电压外环与电流内环控制的平均电流管理技术,实现模式切换无过压过...

双向buck-boost变换器&#xff0c; 采用电压外环&#xff0c; 电流内环控制&#xff0c; 平均电流控制。 在buck模式与boost模式之前切换时&#xff0c;不会发生过压与过流。 该拓补可以用于储能中。双向buck-boost变换器最近在储能领域火得不行&#xff0c;这玩意儿既能当充电…...

Dify RAG召回优化终极方案(2026 Q1生产环境验证版)

第一章&#xff1a;Dify RAG召回优化终极方案&#xff08;2026 Q1生产环境验证版&#xff09;概述本方案基于 Dify v1.12.0 与 LlamaIndex v0.10.53 深度协同&#xff0c;在金融风控问答、法律条文检索、企业知识库三类高精度场景中完成全链路压测与AB测试&#xff0c;平均召回…...

深入理解OPTIONS请求:跨域预检的机制与实践

1. OPTIONS请求的本质与跨域预检机制 第一次在Chrome开发者工具里看到那个神秘的OPTIONS请求时&#xff0c;我也是一头雾水。明明只发了一个POST请求&#xff0c;为什么控制台里会多出个"无关"的请求&#xff1f;后来才知道&#xff0c;这正是浏览器保护我们安全的&q…...

保姆级教程:用ArcGIS Pro从零提取河北省地形地貌(附水文分析实战)

ArcGIS Pro实战&#xff1a;河北省地形地貌提取与水文分析全流程指南 从DEM数据到地形洞察的完整工作流 打开ArcGIS Pro时&#xff0c;那个深色界面总让新手感到既兴奋又忐忑。作为一款强大的地理信息系统软件&#xff0c;它能够将枯燥的数字高程模型(DEM)转化为直观的地形洞察…...

MySQL 时间边界处理实战:精准获取日期范围数据的技巧

1. 为什么时间边界处理这么重要&#xff1f; 做过数据统计的朋友应该都遇到过这样的场景&#xff1a;老板让你统计昨天的订单量&#xff0c;你信心满满地跑了个查询&#xff0c;结果发现数据对不上——要么多了几条今天的记录&#xff0c;要么漏了几条昨天的数据。这种问题十有…...

用Coze工作流3步搞定B站视频文案改写:从采集到爆款生成全流程

用Coze工作流3步搞定B站视频文案改写&#xff1a;从采集到爆款生成全流程 在B站内容生态中&#xff0c;爆款视频的诞生往往始于一个抓人眼球的标题和引人入胜的文案。但对于大多数UP主来说&#xff0c;持续产出高质量文案不仅耗时耗力&#xff0c;还常常陷入创意枯竭的困境。Co…...