Java核心技术卷1每日笔记——变量与常量

3.4 变量与常量

与所有程序设计语言一样,Java也使用变量来存储值。常量就是值不变的量。

3.4.1 声明变量

  1. 在Java中,每个变量都有一个类型(type)。

  2. 变量名必须是一个以字母开头并由字母或数字构成的序列。

    • 字母包括’A’‘Z’、‘a’‘z’、‘_’、'$'或在某种语言表示字母的任何Unicode字符

    • 同样,数字包括’0’~'9’和在某种语言表示数字的任何Unicode字符

    • 但**‘+‘和’@’**这样的符号不能出现在变量名中,空格也不行。

    • 变量名中所有的字符都是有意义的,并且大小写敏感。

    • 变量名的长度基本没有限制。

  3. 想知道哪些Unicode字符属于Java中的“字母”,可以使用Character类的isJavaIdentifierStart和isJavaIdntifierPatr来检查。

    提示:尽管 $ 是个合法的Java字符,但不要在你自己的代码中使用这个字符,它只用在Java编译器或其他工具生成的名字中。

  4. 另外,不能使用Java保留字作为变量名。

  5. 在Java 9中,单下划线 _ 不能作为变量名。不过将来的版本可能使用_作为通配符。

  6. 可以在一行声明多个变量。

    int i, j; //both are integers;
    

    但不提倡这种风格。逐一声明可提高程序的可读性。

  7. 因为变量名对大小写敏感,例如hireday和hireDay是两个不同的变量名。

    一般来讲,在对两个不同的变量命名时,最好不要只存在大小写上的差异。

    不过有些时候,很难给变量取个好名字,于是很多程序用将变量名命名为类型名。例如,

    Box box; //"Box" is the type and "box" is the variable name
    

    还有一些程序员更加喜欢在变量名前假如前缀“a”;

    Box aBox;
    

3.4.2 变量初始化

  1. 声明一个变量后,必须用赋值语句对变量进行实现初始化,千万不要使用未初始化的变量的值。
    例如,Java编译器认为下面的语句序列是错误的:

    int vacationDays;
    System.out.println(vacationDays); //ERROR--variable not initialized
    
  2. 初始化变量时,等号左侧放变量名,等号右侧放取值的Java表达式。

  3. 注意:在Java中,变量的声明尽可能地靠近变量第一次使用的地方,这是一种良好的程序编写风格。

  4. 注释:从Java10开始,对于局部变量,如果可以从变量的初始值推断出它的类型,就不再需要声明类型。只需要使用var关键字而无须指定类型:

       var vacationDays = 12; //vacationDays is an intvar greeting = "Hello";  //greeting is a String
    

3.4.3 常量

在Java中,利用关键字final指示常量。 例如:

public class Constans {public static void main(String[] args) {finale double CM_PER_INCH = 2.54;double paperWidth = 8.5;double paperHeight = 11;System.out.println("Paper size in centimeters:" + paperWidth * CM_PER_INCH + "by" + paperHeight * CM_PER_INCH);}
}
  1. 关键字final表示这个变量只能被赋值一次。

    一旦被赋值之后,就不能再更改了。

  2. 习惯上,常量名使用全大写。

  3. 在Java中,若希望某个常量可以在一个类中的多个方法中使用,通常将这些常量成为类常量(class constant)。

    使用关键字 static final 来设置一个类常量。

    例如:

    public class Constans {public static finale double CM_PER_INCH = 2.54;public static void main(String[] args) {double paperWidth = 8.5;double paperHeight = 11;System.out.println("Paper size in centimeters:" + paperWidth * CM_PER_INCH + "by" + paperHeight * CM_PER_INCH);}
    }
    

    注意:

    • 类变量的定义位于main方法的外部。因此在同一个类的其他地方也可以使用这个变量。
    • 如果一个类常量被设置为public, 那么其他类的方法也可以使用这个常量,例如这里的Constant2.CM_PER_INCH。
  4. C++注释:const是Java保留的关键字,但目前并没有使用。在Java中,必须使用final定义常量。

3.4.4 枚举类型
  1. 有时,变量的取值只在一个有限的集合内。

    例如销售的服装和披萨只有小、中、大和超大四种尺寸的。

    我们可以将这些尺寸分别编码为1、2、3、4或S、M、L、X。

    但这种设置很容易出错(或者说无法检错)。

  2. 针对这种情况,我们可以自定义枚举类型。

    即枚举类型包括有限个命名的值。例如

    enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
    //用enum来定义枚举类型,定义了一个枚举类型,名叫Size,有四个值SMQLL,MEDIUM,LARGE,EXTRA_LARGE
    

    现在我们可以声明这种类型的变量:

    Size s = Size.MEDIUM; 
    

    Size类型的变量只能存储这个类型声明中给定的某个枚举值,或特殊值null,null表示这个变量没有设置任何值。

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

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

相关文章

网页在特殊日子一键变灰

<template> <div :class"{ grayscale: isGrayscale }"> <!-- 你的页面内容放在这里 --> </div> </template> <script> export default { data() { return { // 存储哀悼日的数组 aidaoriDates:["0404", &q…

docker学习入门

1、docker简介 docker官网&#xff1a; www.docker.com dockerhub官网&#xff1a; hub.docker.com docker文档官网&#xff1a;docs.docker.com Docker是基于Go语言实现的云开源项目。 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere(构建&…

1.2_2 OSI参考模型

文章目录 1.2_2 OSI参考模型一、概述&#xff08;一&#xff09;ISO/OSI参考模型是怎么来的&#xff1f;&#xff08;二&#xff09;ISO/OSI参考模型&#xff08;三&#xff09;ISO/OSI参考模型解释通信过程 二、各层功能及协议&#xff08;一&#xff09;应用层&#xff08;第…

oss-fuzz-gen:一款基于LLM的模糊测试对象生成与评估框架

关于oss-fuzz-gen oss-fuzz-gen是一款基于LLM的模糊测试对象生成与评估框架&#xff0c;该工具可以帮助广大研究人员使用多种大语言模型&#xff08;LLM&#xff09;生成真实场景中的C/C项目以执行模糊测试。 该工具基于Google的OSS-Fuzz平台实现其功能&#xff0c;并对生成的…

蓝桥OJ 2942数字王国之军训排队 DFS剪枝

蓝桥OJ 2942数字王国之军训排队 #include<bits/stdc.h> using namespace std;const int N 15;//最多10队 int a[N], n; vector<int>v[N];//二维数组 v[i]记录队伍i中所有人的编号bool dfs(int cnt, int dep) {if (dep n1){//判断合法性for (int i 1; i < n; …

matlab常用语法

最近接触matlab程序&#xff0c;这里记录一下matlab常用语法。 1、find函数&#xff1a;查找矩阵X中的非零元素&#xff0c;返回这些元素的下标。 A[1,0;2,3]; find(A)ans 124 find(A2)&#xff1a;查找A中等于2的元素&#xff0c;并返回下标。 A[1,0,2,3,2,7]; find(A2)an…

Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!

内容概要 BeanDefinitionRegistry接口提供了灵活且强大的Bean定义管理能力&#xff0c;通过该接口&#xff0c;开发者可以动态地注册、检索和移除Bean定义&#xff0c;使得Spring容器在应对复杂应用场景时更加游刃有余&#xff0c;增强了Spring容器的可扩展性和动态性&#xf…

【C++那些事儿】函数重载与C++中的“指针“——引用

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;我之前看过一套书叫做《明朝那些事儿》&#xff0c;把本来枯燥的历史讲的生动有趣。而C作为一门接近底层的语言&#xff0c;无疑是抽象且难度颇…

为什么RTX 4090更受欢迎

RTX 4090作为顶级显卡&#xff0c;凭借高性能和高图形处理能力&#xff0c;特别适合游戏、专业图形设计和人工智能领域&#xff0c;备受专业游戏玩家和高性能计算需求开发者的青睐。 RTX 4090高速复杂的计算能力 RTX 4090 GPU拥有 760 亿个晶体管、16384 个 CUDA 核心和 24 GB…

FPGA Verilog编写状态机学习

1 二段式状态机 1.1 简介&#xff1a; 二段式状态机&#xff08;Two-phase state machine&#xff09;是一种常见的状态机实现方式&#xff0c;它将状态机的执行过程分为两个阶段&#xff1a;第一段是组合逻辑&#xff0c;用于确定下一个状态&#xff1b;第二段是时序逻辑&am…

nestjs10.x使用jwt生成token

1 安装依赖&#xff1a; pnpm install --save nestjs/jwtpnpm install passport passport-jwt nestjs/jwtpnpm install types/passport-jwt --save-dev 2 可以使用命令新建auth鉴权文件夹 nest g mo auth // auth.module.ts nest g s auth // auth.service.ts nest g co …

杠杆和保证金有什么关系?WeTrade众汇一个公式讲清楚

在交易中杠杆其实就是一种期权&#xff0c;它能增加交易者作为抵押品的资金&#xff0c;以建立和维持头寸。 例如&#xff0c;1:100的操作杠杆&#xff0c;在这种情况下&#xff0c;意味着开立1000单位基础货币的头寸&#xff0c;交易者将需要少100倍的资金&#xff0c;即10个…

Node.js基础---JSONP 接口

1. 概念及特点 概念&#xff1a;浏览器通过 <script> 标签的 src 属性&#xff0c;请求服务器上的数据&#xff0c;同时服务器返回一个函数的调用。这种请求数据的方式叫做 JSONP 特点&#xff1a; ① JSONP 不属于真正的 Ajax 请求&#xff0c;因为它没有使用 XMLHtt…

Linux 进程的 status 注解。

我们知道 Linux 一切都是面向文件的&#xff0c;所以我们可以通过文件来获取到正在运行的ELF程序的状态信息。 本文会注解进程状态里面的各项输出参数的作用&#xff0c;以便于人们在写SH脚本程序的时候可以作为一个参照信息表。 当我们知道了进程ID时可以用这个命令来查看进…

C++常量和变量

甲流疫情死亡率 甲流并不可怕&#xff0c;在中国&#xff0c;它的死亡率并不是很高。根据截至2009年12月22日各省报告的甲流确诊数和死亡数&#xff0c;计算甲流在各省的死亡率 输入 一行&#xff0c;有两个整数&#xff0c;第1个为确诊数&#xff0c;第2个为死亡数 输出 一…

学习Java的第四天

目录 一、if选择结构 1、基本if选择结构 语法结构&#xff1a; 流程图&#xff1a; 示例&#xff1a; 2、if-else 选择结构 语法结构&#xff1a; 流程图&#xff1a; 示例&#xff1a; 3、多重if选择结构 语法结构&#xff1a; 流程图&#xff1a; 示例&#xff1a…

探秘分布式神器RMI:原理、应用与前景分析(二)

本系列文章简介&#xff1a; 本系列文章将深入探究RMI远程调用的原理、应用及未来的发展趋势。首先&#xff0c;我们会详细介绍RMI的工作原理和基本流程&#xff0c;解析其在分布式系统中的核心技术。随后&#xff0c;我们将探讨RMI在各个领域的应用&#xff0c;包括分布式计算…

【Docker】若依ruoyi项目部署

一 搭建局域网 1 # 搭建net-ry局域网&#xff0c;用于部署若依项目docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1 # 注意1&#xff1a;关闭宿主机的防火墙&#xff0c;否者容器内部的MySQL、redis等服务&#xff0c;外部访问不了&#xff1b;开放…

【REST2SQL】12 REST2SQL增加Token生成和验证

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】05 GO 操作 达梦 数据库 【REST2SQL】06 GO 跨包接口重构代码 【REST2SQL】07 GO 操作 Mysql 数据库 【RE…

如何使用 window 的.bat 完全拷贝一个文件到另外一个文件全部替换

比如你的文件夹是 A 你想拷贝 A的文件到 B并且全部替换 那么你可以这样子做 1.在 window 桌面新建一个文件夹,在这文件里面新建两个文件,文件 A和文件 B 2.然后新建后缀命名为 copy.bat 回车,然后选择编辑这个 copy.bat 你可以使用文本编辑即可; 3.然后你在这个 copy.bat 编…