corejava11(3.4 变量和常量)

3.4 变量和常量

与每种编程语言一样,变量用于存储值。常量是值不变的变量。在下面的部分中,您将学习如何声明变量和常量。

3.4.1 变量的声明

在Java中,每个变量都有一个类型。通过将类型放在第一位,后跟变量名来声明变量。以下是一些例子:

double salary;
int vacationDays;
long earthPopulation;
boolean done;

注意每个声明末尾的分号。分号是必要的,因为声明是一个完整的Java语句,所有Java语句都以分号结尾。

变量名必须以字母开头,并且必须是字母或数字序列。注意,“字母”和“数字”这两个术语在Java中比大多数语言都要广泛得多。字母定义为’A’-‘Z’、‘a’-‘z’、’_’、’$‘或任何表示语言中字母的Unicode字符。例如,德语用户可以在变量名中使用’ä ‘等变音符号;希腊语使用者可以使用π。类似地,数字是’0’-‘9’,以及表示语言中数字的任何Unicode字符。像’+‘或’©’)这样的符号不能在变量名中使用,也不能使用空格。变量名中的所有字符都很重要,大小写也很重要。变量名的长度基本上是无限的。

提示

如果你真的很好奇,对于Java来说,Unicode字符是什么“字母”,你可以使用Character类中的isJavaIdentifierStartisJavaIdentifierPart方法来检查。

提示

即使$是一个有效的Java字母,也不应该在自己的代码中使用它。它用于Java生成的名称,也不能使用Java保留字作为变量名。对于Java 9,单个_不能用作变量名。Java的未来版本可以使用_作为通配符。您可以在一行中声明多个变量:

int i, j; // both are integers

但我们不推荐使用这种样式。如果您分别声明每个变量,您的程序更容易阅读。

注意

如您所见,名称区分大小写,例如,hiredayhireDay是两个独立的名称。一般来说,你不应该只有两个在字母大小写上有所不同的名字。然而,有时很难为变量取一个好的名称。例如,许多程序员会给变量赋予与类型相同的名称

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

一些程序员倾向于在变量前面使用一个a做为前缀

Box aBox;

3.4.2 初始化变量

在声明变量之后,必须通过赋值语句显式初始化变量,不能使用未初始化变量的值。例如,Java编译器将以下语句序列标记为错误:

int vacationDays;
System.out.println(vacationDays); // ERROR--variable not initialized

通过使用左边的变量名、等号(=)、然后在右边用适当值的Java表达式来分配先前声明的变量。

int vacationDays;
vacationDays = 12;

可以在同一行中声明和初始化变量。例如:

int vacationDays = 12;

最后,在Java中,可以在代码中的任意位置放置声明。例如,以下是Java中的有效代码:

double salary = 65000.0;
System.out.println(salary);
int vacationDays = 12; // OK to declare a variable here

在Java中,将变量尽可能地声明为第一次使用的变量被认为是好的风格。

注意

从Java 10开始,如果可以从初始值推断出局部变量的类型,则不需要声明类型。只需使用关键字var而不是类型:

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

我们将在下一章中开始使用这个特性。

C和C++区分变量的声明和定义。例如,

int i = 10;

是定义,而

extern int i;

是一个声明。在Java,没有声明与定义分离。

3.4.3 常量

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

public class Constants
{
    public static void main(String[] args)
    {
        final 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;
    }
}

关键字final表示可以对变量赋值一次,然后对变量的值进行一次设置。习惯上用大写字母命名常量。

在Java中创建一个常量可能更为常见,因此它可以用于单个类中的多个方法。这些通常被称为类常量。用关键字static final设置类常量。下面是使用类常量的示例:

public class Constants2
{
    public static final 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;
    }
}

注意,类常量的定义出现在主方法之外。因此,常数也可以在同一类的其他方法中使用。此外,如果像在我们的示例中一样声明常量public,其他类的方法也可以在我们的示例中使用它,如Constants2.CM_PER_INCH。

C++注意

const是一个保留的Java关键字,但它目前不用于任何东西。必须对常量使用final。

3.4.4 枚举类型

有时,变量应该只保存一组有限的值。例如,您可以销售四种尺寸的衣服或比萨饼:小、中、大和特大。当然,您可以将这些大小编码为整数1、2、3、4或字符s、m、l和x。但这是一个容易出错的设置。变量太容易保存错误的值(如0或m)。

每当出现这种情况时,您可以定义自己的枚举类型。枚举类型具有有限数量的命名值。例如,

enum Size { SMALL, MEDIUM, LARGE, EXTRA_LARGE };

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

Size s = Size.MEDIUM;

类型Size的变量只能包含类型声明中列出的一个值,或者特殊值null,该值指示变量根本没有设置为任何值。

我们将在第5章中更详细地讨论枚举类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值