-
2021-03-08 02:11:34
我有一个常量字符串列表,需要在Java程序中的不同时间显示它们。
在C语言中,我可以在代码顶部定义以下字符串:
#define WELCOME_MESSAGE"Hello, welcome to the server"
#define WAIT_MESSAGE"Please wait 5 seconds"
#define EXIT_MESSAGE"Bye!"
我想知道用Java做这种事情的标准方法是什么?
static final String WELCOME_MESSAGE ="Hello";?
你有做过研究吗?
是的,但是我读了一些网站,他们说final不是java中的常量,所以我不
Java中的@csss final表示无法更改引用-但指向的对象仍然可以更改。 对我们来说幸运的是,Java中的String是一个不可变的类,因此final String在这两个方面都是常量。
通常,您可以在班级顶部定义此代码:
public static final String WELCOME_MESSAGE ="Hello, welcome to the server";
当然,根据使用此常量的位置,使用适当的成员可见性(public / private / protected)。
香港专业教育学院一直想知道,如果将常量定义为私有,是否不必将常量设置为静态?
不,它应该仍然是static。 每次实例化类型时,将其设置为私有和非静态仍将创建该字符串的新副本。 见stackoverflow.com/q/1415955/247763
它看起来像这样:
public static final String WELCOME_MESSAGE ="Hello, welcome to the server";
如果常量仅在单个类中使用,则需要将其设为private而不是public。
public static final String YOUR_STRING_CONSTANT ="";
或行业中另一个典型的标准是拥有一个Constants.java命名类文件,其中包含要在项目中使用的所有常量。
您可以使用
public static final String HELLO ="hello";
如果您有许多字符串常量,则可以使用外部属性文件/简单
"固定持有人"类
我们通常将常量声明为static。这样做的原因是因为Java在每次实例化该类的对象时都会创建非静态变量的副本。
因此,如果我们使常量static不会这样做,则会节省内存。
使用final,我们可以使变量恒定。
因此,定义常量的最佳实践如下:
private static final String YOUR_CONSTANT ="Some Value";
访问修饰符可以为private/public,具体取决于业务逻辑。
你错了。 由于JVM使用了字符串池,因此无助于节省内存。
@Mirimas Nope。 老兄,你错了。 静态仅初始化一次,但每次初始化非静态变量的对象时,都会初始化一个非静态变量。
这里使用了字符串池,因为您不使用" new"关键字来创建字符串。 因此,即使您不对字符串使用static,它也会使用已从字符串池创建的引用。 查看更多:stackoverflow.com/questions/3297867/
只需使用
final String WELCOME_MESSAGE ="Hello, welcome to the server";
该指令的主要部分是"最终"关键字。
更多相关内容 -
Java中符号常量
2021-02-26 11:57:52使用final定义符号常量 符号常量:NUM、PI在这个例子中,使用符号的好处是:如果此时要将圆周率3.14的值修改为3.14159,如果没有使用符号常量,那么至少要修改两次PI的地方,而现在定义了符号常量PI,只要PI一个位置...使用final定义符号常量
符号常量:NUM、PI
在这个例子中,使用符号的好处是:如果此时要将圆周率3.14的值修改为3.14159,如果没有使用符号常量,那么至少要修改两次PI的地方,而现在定义了符号常量PI,只要PI一个位置即可。如果在一个大型的项目当中出现这种情况,有成千上万个,难道要逐个去修改吗?那会相当的麻烦。Final取自于finally表示最终的,表示不能再被改变的,在C语言中用CONST来代表常量,这个词取自于CONSTANT。可以结合英文单词来记忆这些关键词。
在Java语言中,主要是利用final关键字来定义常量。当常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个在Java语言中,主要是利用final关键字来定义常量。当常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个常量:final double PI=3.1315。在定义这个常量时,需要注意如下内容:
一是常量在定义的时候,就需要对常量进行初始化。也就是说,必须要在常量声明时对其进行初始化。都跟局部变量或者成员变量不同。当在常量定义的时候初始化过后,在应用程序中就无法再次对这个常量进行赋值。如果强行赋值的话,会跳出错误信息,并拒绝接受这一个新的值。
二是final关键字使用的范围。这个final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。如数组就是一个对象引用。为此可以使用final关键字来定义一个常量的数组。这就是Java语言中一个很大的特色。一旦一个数组对象被final关键字设置为常量数组之后,它只能够恒定的指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组中的值。
三是需要注意常量的命名规则。不同的语言,在定义变量或者常量的时候,都有自己一套编码规则。这主要是为了提高代码的共享程度与提高代码的易读性。在Java语言中,定义常量的时候,也有自己的一套规则。如在给常量取名的时候,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采用大写字符,主要是跟变量进行区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。但是,为了在编写代码时能够一目了然的判断变量与常量,最好还是能够将常量设置为大写字符。另外,在常量中,往往通过下划线来分隔不同的字符。而不想对象名或者类名那样,通过首字符大写的方式来进行分隔。这些规则虽然不是强制性的规则,但是为了提高代码友好性,方便开发团队中的其他成员阅读,这些规则还是需要遵守的。没有规矩,不成方圆。
总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来进行连接多个单词。在定义final的数据不论是常量、对象引用还是数组,在主函数中都不可以改变。否则的话,会被器拒绝并提示错误信息。
-
在Java中定义常量两种常见策略
2021-03-06 13:49:46在本文中,我们将了解在Java中存储常量的两种最常见的策略:整数和枚举。首先也是最重要的,当你决定使用常量时,你应该非常确定常量不会随着时间而改变,这样你就可以避免重新编译。在这篇文章中,我...关于Java中常量的话题似乎有很多困惑。有些人使用整数或字符串来定义常量,而另一些人则使用枚举。
我还遇到了在它们自己的接口中定义的常量——在接口中,使用常量的类必须实现接口。这种策略通常被称为接口常量设计模式。
在本文中,我们将了解在Java中存储常量的两种最常见的策略:整数和枚举。
首先也是最重要的,当你决定使用常量时,你应该非常确定常量不会随着时间而改变,这样你就可以避免重新编译。
在这篇文章中,我们将使用一个非常常见的常量候选——工作日!
假设我们有一个表示在线商店中订单的类,我们希望在其中跟踪订单发生在一周中的哪一天。
看起来是这样的:
请注意,该类暂时不会编译-[数据类型]只是我们将使用的常量类型的占位符。
用整数定义常数
在Java中,定义常量最常用的方法之一是通过整数,其中整数变量是静态的。
定义整数常量时要问的第一个问题是将它们放置在何处。我们是否将它们直接放在班级中?还是给他们上课?
由于days非常通用,而且不一定只连接到Order类型的对象,因此我们将在它们自己的类WeekDay中定义它们。
你可能注意到了私有构造函数——这是为了避免客户端实例化类。该类只保存静态变量,这些变量没有绑定到对象,因此不需要实例化该类。
现在,每当我们需要为订单设定一个特定的日期时,我们都会这样做:
当我们想检查订单是否发生在星期五时,我们可以简单地调用write:
到目前为止,还不错。这个设计肯定不会有什么问题吧?
假设你一年后会回到这个代码,你必须检查下订单是否在周一发生。
在这种情况下,可以尝试以下方法:
在那一刻,完全忘记了WeekDay类,这段代码非常有意义。星期一是一周的第一天,所以工作日应该是1,对吧?
但不是,因为静态int变量Monday在我们的WeekDay类中定义为0!
这是一个很好的例子,说明了为什么应该考虑避免使用整数常量。它们容易出错和混淆,并且很难调试。
用枚举定义常量
在Java中定义常量的另一种方法是使用枚举。
当使用枚举时,常量类将如下所示:
注意,没有私有构造函数-不需要程序员(你!)强制该类是不可实例化的,因为枚举在默认情况下是不可实例化的!
将工作日设置为顺序的语法与整型常量的语法完全相同:
我们如何在星期五处理订单也没有什么不同:
关键的区别在于,这是在Order类中设置和比较weekday变量值的唯一方法。
order.setWeekDay(1);和if(order.getWeekDay()==1)都会使编译器抛出一个错误,因为试图使用integerDay类型的变量,而它们应该是WeekDay类型。
回想一下你完全忘记了的情景。
对于枚举,这不再是一个问题。如果尝试使用整数而不是工作日枚举的成员,编译器只会抛出一个错误,告诉您需要使用工作日枚举。
换言之,唯一能检查订单是否在星期五发生的是:
就如上面这样,再清楚不过了。
不再被迫记住constants类,如果有任何客户机要使用您的代码,他们不必怀疑Monday实际上是由0还是1表示的。
我希望这个例子向您展示了为什么在定义常量时应该考虑在整数上使用枚举。
枚举将使你的代码不易出错、更易于阅读和维护。
-
Java中的常量有哪些?
2021-02-12 10:49:52JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。那么java的常量有哪些呢?在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。下面我们就一起来看看java中...JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。那么java的常量有哪些呢?在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。
下面我们就一起来看看java中的这些常量。
1. 整型常量
整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式具体表示形式如下。
二进制:由数字0和1组成的数字序列。在JDK7.0中允许使用字面值来表示二进制数,前面要以0b或0B开头,目的是为了和十进制进行区分,如0b01101100、0B10110101。
八进制:以0开头并且其后由0~7范围内(包括0和7)的整数组成的数字序列,如0342。
十进制:由数字0~9范围内(包括0和9)的整数组成的数字序列。如198。
十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。
需要注意的是,在程序中为了标明不同的进制,数据都有特定的标识,八进制必须以0开头,如0711,0123;十六进制必须以0x或0X开头,如0xaf3、0Xff;整数以十进制表示时,第一位不能是0,0本身除外。例如十进制的127,用二进制表示为011111八进制表示为017,用十六进制表示为0x7F或者0X7F。
2. 浮点数常量
浮点数常量就是在数学中用到的小数,分为foat单精度浮点数和double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示。具体示例如下:
2e3f 3.6d 0f 3.84d 5.022e+23f
3. 字符常量
字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引’’号引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。具体示例如下:
‘a’ ‘1’ ‘&’ ‘\r’ ‘\u0000’
上面的示例中,’\u00’表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示,是因为Java采用的是Unicode字符集,Unicode字符以\u开头,空白字符在Unicode码表中对应的值为’\u0000’。
4. 字符串常量
字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号””引起来,具体示例如下:
“HelloWorld" “123" "We come \n XXX" "”
一个字符串可以包含一个字符或者多个字符,也可以不包括任何字符,即长度为零。
5、布尔常量
布尔常量即布尔型的两个值true和false,该常量用于区分一个事物的真与假。
6、null常量
null常量只有一个值null,表示对象的引用为空。
以上我们介绍了Java中的常量,如果学习java中遇到其他可以点击咨询按钮获取帮助。
想学习java建议根据了解Java中级程序员学习路线图学习。
-
Java中的常量,常量的表现形式和进制的转换及有符号数据表示法(原码,反码,补码)
2021-03-08 09:53:31分类:(1) 字面值常量字符串常量:用双引号括起来内容字符常量:用单引号括起来的内容整数常量:所有整数小数常量:所有小数布尔常量:true 或 false空常量: null(2) 自定义常量(符号常量)用final修饰变量(也就是... -
在C语言程序中,符号常量的定义要使用什么预处理命令
2021-05-20 04:57:31编程序计算圆的面积和球的体积....给你个QBasic的吧.inputrpi=3.141592654s=pi*r*rv=4*C语言中命名常量与符号常量的区别你说的命名常量和符号常量应该是用const和define宏的意思const表示常量,它... -
Java中常量定义的几种方式
2021-02-12 09:18:04编程中使用常量的优点:常量提取出来有利于代码阅读,而且下次再做这种判断不用手写或复制并且提高代码的复用率,方便修改,直接通过常量类就能得到。不过我觉得提取出来并不会有利于代码性能提升,因为常量分配在... -
Java中的常量
2021-03-14 00:43:20A:什么是常量* 在程序执行的过程中其值不可以发生改变* B:Java中常量的分类* 字面值常量* 自定义常量* 整数常量:所有整数*小数常量:所有小数*布尔常量:较为特殊,只有两个值,true或者false*字符常量:将一个数字... -
java--常量
2022-03-28 18:10:43//常量(Constant) // // 在Java语言中,用关键字final来定义...// 为了更好的区分和表述,一般将1、23'a'b’truefalse "helloWorld等称为字符常量,而使用final修饰的PI等称为符号常量。 // 变量和常量命名规范 // . -
java中的常量池
2021-02-03 22:09:41Class类中有一个常量池保存字面量(就是一些字符串和被final修饰的变量)和符号引入(类名、方法名、变量名) 运行时常量池,在类被加载到内存之后,将Class中常量池转变为运行时常量池,存在于方法区 字符串常量池... -
java基础之分隔符与常量变量
2022-04-14 16:16:43java基础之分隔符与常量变量大全 -
java字符常量
2021-03-05 20:44:30在Java程序中经常会遇到类似于"Hello"这样地字符串,那么这种类型的字符串是Java中是如何存储,下面就说明字符串常量在内存中存储方式:Java程序在编译时会将程序中出现的常量(包括:char、byte、short、int、long、... -
JAVA java学习(19)——————java 常量、常量值(字面常量)、常量定义、常用转义字符
2020-10-24 08:32:25在 Java 中使用 final 关键字来修饰常量。 虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量。 常量值 常量值又称为字面常量,它是通过数据直接表示的,因此有很多种数据类型,像整型和字符串型... -
Java中整数常量的表示方式
2019-02-27 17:50:04Java中整数常量有4种表示方式:二进制,十进制,八进制和十六进制。 二进制表示: Java7新增了对二进制整数的支持,二进制的整数以0b或0B开头。 如:int value1=0b11010100; 八进制表示: 八进制的整数常量以0... -
将π的值定义为符号常量PI
2021-05-21 07:51:25编程序计算圆的面积和球的体积....给你个QBasic的吧.inputrpi=3.141592654s=pi*r*rv=4*C语言符号常量定义C语言中定义符号常量是否必须用类型名来设定常量的类型!不是,例如宏定义中:#definePRICE3... -
java常量的声明使用定义等
2021-03-01 07:19:21在定义常量的时候要注意的问题:常量要在定义时赋值常量定义之后就不能再改变它的值常量使用final关键字来定义Java里有六个特殊常量NaN, Inf, -Inf, null, true, falsejava常量定义的例子final double d = 1... -
用define可以定义符号常量。()
2021-05-20 15:57:11在C语言中符号常量是由宏定义“#define”来定义的常量,以下叙述中正确的是()在下列的符号常量定义中,正确的定义格式为()A.#defineM1B.constintM220C.#defineM3定义符号常量通常使用宏定义命令关键字()下面叙述错误... -
java源码生成-java_preprocessor:Java源代码的预处理器,它支持方便地生成符号常量,字符串或字符的数组...
2021-05-19 22:08:57您在代码中添加特殊注释,然后运行预处理器。 它以各种方式操纵源代码。 例如,它允许您以方便的方式生成一系列数字常量,类似于C语言的enum指令。 用法示例 考虑以下Java源文件Test.java(语法上不正确,但是用于... -
Java中的常量Constant
2020-12-08 20:57:09二、符号常量 看到的是符号 符号对应的具体数值 比如: 圆周率(PI) , 自然数(E) 从数据类型上分可分为两大类 一、基本数据类型 整数常量:代表所有的整数 小数常量:代表所有的小数 字符常量:代表语言中... -
浅谈JAVA中字符串常量的储存位置
2021-02-12 18:46:26在讲述这些之前我们需要一些预备知识:Java的内存结构我们可以通过两个方面去看待它。从该角度看的话Java内存结构包含以下部分:1、栈区:由编译器自动分配释放,具体方法执行结束后,系统自动释放JVM内存资源。其... -
Java中的常量池之Class常量池
2020-05-19 19:54:09在Java中,常量池的概念想必很多人都听说过。这也是面试中比较常考的题目之一。在Java有关的面试题中,一般习惯通过String的有关问题来考察面试者对于常量池的知识的理解,几道简单的String面试题难倒了无数的开发者... -
java中的关键字、标识符、变量及常量
2019-03-16 15:56:40Java语言中一些具有特殊用途的单词被称作关键字,定义标识符时不要让标识符和关键字相同,以免引起错误,Java中的关键字一般都是小写,Java一共包含50个关键字,根据他们的用途,可以划分成4类。 1、标识数据类型、... -
JAVA常量
2021-04-18 07:48:23常量是指在程序的整个运行过程中其值不可改变的量。一、整数常量:表示一个不带小数位的整数、可正可负、有3中表示形式。1.十进制:用非零数字开头、如56、-24、0。2.八进制:用零头、如017、0、0123。3.十六进制:... -
Java里常用的常量
2019-12-21 17:12:01那个Java工程里还没有个常量类 宝贵的人类的经验根本没有长篇大论,真正的好东西都是拿起来就用。 /** * 系统名 */ public static final String OS_NAME = System.getProperty("os.name"); /** * Java... -
Java中变量和常量-----Java中的常量
2022-05-03 10:36:50java的常量 -
java中的常量与变量
2019-04-27 12:21:05常量 常量:在程序运行期间,固定不变的量。 常量的分类: 1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”、“Hello”、“123”。 2.整数常量:直接写上数字,没有小数点。例如:100,... -
JAVA常量池中存储的常量是什么
2021-02-26 12:09:29展开全部我当初也存在这样一个疑问,下面我把e69da5e887aa3231313335323631343130323136353331333262356165当初所搜集的一些资料以及自己的理解贴出来给你看看(比较多,需要耐心点看,呵呵):理解Java常量池JVM运行...