《21天学通Java(第7版)》—— 2.2 变量和数据类型

简介: 在第1章创建的应用程序MarsRobot中,您使用变量来跟踪信息。变量是程序运行时能够存储信息的地方。可在程序的任何地方对其中的值进行修改——因此被称为变量。 要创建变量,必须提供名称并指定它存储的信息类型。

本节书摘来异步社区《21天学通Java(第7版)》一书中的第2章,第2.2节,作者: 【美】Rogers Cadenhead(罗格斯 卡登海德),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 变量和数据类型

在第1章创建的应用程序MarsRobot中,您使用变量来跟踪信息。变量是程序运行时能够存储信息的地方。可在程序的任何地方对其中的值进行修改——因此被称为变量。

要创建变量,必须提供名称并指定它存储的信息类型。还可以在创建变量的同时给它指定初始值。

在Java中,有3种变量:实例变量、类变量和局部变量。

正如第1章中指出的,实例变量用于定义对象的属性。

类变量定义类的属性,适用于类的所有实例。

局部变量用于方法定义乃至方法中更小的语句块中。仅当Java虚拟机执行这些方法或语句块时,它们才被使用,离开方法或块之后,它们将不复存在。

虽然这3种变量的创建方式极其相似,但在使用方式上,类变量和实例变量不同于局部变量。本章介绍局部变量,而实例变量和类变量将在第3章介绍。

2.2.1 创建变量
在Java程序中使用变量之前必须先创建它——声明其名称和存储的信息类型。首先指出信息类型,然后是变量名,下面是一些变量声明的例子:

int loanLength;
String message;
boolean gameOver;
在上述示例中,int类型表示整数,String是用来存储文本的对象,boolean用来存储true/false值。

就像其他Java语句一样,局部变量可在方法的任何地方声明,但必须在使用前声明。

下面的示例在程序的main()方法开头声明了3个变量:

public static void main(String[] arguments) {

 int total; 
 String reportTitle;
 boolean active;

}
创建多个类型相同的变量时,可在同一条语句中声明它们,并用逗号将各个变量分开。下面的语句声明了3个名为street、city和state的String变量:

String street, city, state;
声明变量时,可以使用等号给它赋值。下面的语句创建新变量并给它们指定初始值:

String zipCode = "02134";

int box = 350;
boolean pbs = true;
String name = "Zoom", city = "Boston", state = "MA";
正如最后一条语句表明的,可以使用逗号分隔的方式给多个类型相同的变量赋值。

对于局部变量,在程序中使用它之前,必须给它赋值,否则程序将无法通过编译。因此,良好的习惯是给所有局部变量指定初始值。

默认情况下,实例变量和类变量的初始值取决于其数据类型。

数值变量:0。
字符变量:"0"。
布尔变量:false。
对象:null。
2.2.2 给变量命名
在Java中,变量名必须是以字母、下划线(_)或美元符($)打头。

变量名不能以数字打头。在第一个字符之后,变量名可包含任何字母、数字、下划线和美元符号的组合。

注意

另外,Java语言使用Unicode字符集,该字符集包括标准字符集,外加几千个用于表示国际字母的字符。有Unicode字符号的重音字符和其他符号也可用于变量名中。
在程序中给变量命名并使用它时,别忘了Java是区分大小写的——字母的大小写必须一致。因此,同一个程序中可以有变量X和x,而rose、Rose和ROSE是不同的变量。

在本书或其他地方的程序中,Java变量都被赋予一个有意义的名称,它们由多个单词组合而成。为方便辨识,可使用下述通用规则:

变量名的第一个字母小写;
变量名中其他单词的第一个字母大写;
其他字母都小写。
下面的变量声明遵循了上述命名规则:

Button loadFile;
int localAreaCode;
boolean quitGame;
虽然在变量名中可以使用下划线,但除非在如下情况下,否则不应使用它:整个变量名都是大写时,使用下划线将各个单词分开,如下所示:

static int DAYS_IN_WEEK = 7;
本章后面将介绍要将整个变量名都大写的原因。

虽然在变量名中可以使用美元符号,但在任何情况下都不应这样做。Java官方文档建议不要使用它,因此程序员都遵循这种约定。

2.2.3 变量类型
除名称外,变量声明还必须包括存储的信息类型,这可以是:

基本数据类型,如int或boolean;
类名或接口名;
数组。
关于如何声明和使用数组变量,将在第4章介绍。本章重点介绍其他变量类型。

1.数据类型
Java提供了8种基本数据类型,用于存储整数、浮点数、字符和布尔值。它们通常被称为简单类型(primitive type),因为它们是Java内置的而不是对象,这使得它们更容易创建和使用。不管在什么操作系统和平台上,这些数据类型的长度和特征都相同,这与其他编程语言的某些数据类型不同。

用于存储整数的数据类型有4种,如表2.1所示。具体使用哪种类型取决于要存储的整数大小。

表2.1  整型

类型

长度(bit)

取值范围

byte

8

−128~127

short

16

−32768~32767

int

32

−2147483648~2147483647

long

64

−9223372036854775808~9223372036854775807

所有这些类型都是有符号的,这意味着它们既可以存储正数,也可以存储负数。给变量指定哪种类型取决于需要存储的值的范围。所有这些整型变量都不能正确存储超出其取值范围的值,所以在指定类型时一定要小心。

另一种数值是浮点数,其类型为float或double。浮点数是带小数的数字。float类型的取值范围为1.4E-45到2.4E+38;double类型的精度更高,其取值范围为4.9E-324到1.7E+308。鉴于double的精度更高,因此它通常比float更佳。

char类型用于存储单个字符,如字母、数字、标点和其他符号。

最后一种基本类型是boolean。正如前面介绍过的,其取值为true或false。

所有这些变量类型名都是小写的,在程序中必须这样使用它们。存在与这些数据类型名称相同,但大小写不同的类,如Boolean和Double。在Java程序中,创建和引用它们的方式不同,因此大多数情况下不能互换。下一章将介绍如何使用这些特殊的类。

注意

如果算上void,Java中实际上有9种基本类型。void表示“空”(nothing),用于指出方法不返回任何值。
2.类的类型
除基本数据类型外,变量的类型还可以是类,如下所示:

String lastName = "Hopper";
Color hair;
MarsRobot robbie;
当变量的类型为类时,它指的是这种类或其子类的一个对象。

在上述代码中,最后一条语句声明一个名为robbie的变量,用于存储Mars Robot对象。下一章将介绍如何将对象和变量关联起来。

2.2.4 给变量赋值
声明变量后,可以用赋值运算符(=,等号)给它赋值。下面是两个赋值语句的例子:

idCode = 8675309;
accountOverdrawn = false;
2.2.5 常量
如果需要存储在程序运行时可以修改的信息,使用变量很有用。

对于在程序运行过程中一直不变的值,可以用一种特殊的变量——常量。常量是值保持不变的变量。这里的“变量”有些用词不当。

为对象的所有方法定义共享值时,常量很有用。在Java中,可以创建各种类型的常量:实例常量、类常量和局部常量。

要声明常量,可在变量声明前加上关键字final,并指定初始值,如下所示:

final double PI = 3.141592;
final boolean DEBUG = false;
final int PENALTY = 25;
可使用常量来表示对象的不同状态,然后测试这些状态。假设有一个这样的程序,它直接从数字键盘读取方向输入——8表示向上,4表示向左,6表示向右,2表示向下等,则您可以将这些值定义为整型常量:

final int LEFT = 4;
final int RIGHT = 6;
final int UP = 8;
final int DOWN = 2;
常量让程序更容易理解。为了说明这一点,请看下面哪条语句更清楚地说明了其功能:

guide.direction = 4;
guide.direction = LEFT;
注意

在上述语句中,常量名都为大写,如DEBUG和LEFT。Java程序员都这样做,以表明这是常量而不是变量;虽然Java并未要求常量名必须大写,但您最好遵循这种做法。
常量名由多个单词组成时,将整个常量名都大写将导致各个单词难以区分开来,如ESCAPECODE。在这种情况下,应使用下划线将各个单词分开,如下所示:

final int ESCAPE_CODE = 27;
本章要介绍的第一个项目是一个这样的Java应用程序:创建多个变量,给它们赋初始值,然后显示其中两个变量的值。请启动NetBeans,并按如下步骤新建一个Java程序(其中有个步骤与第1章不同)。

1.选择菜单“文件”>“新建文件”打开“新建文件”对话框。

2.在“类别”窗格中选择Java。

3.在“文件类型”窗格中选择“空Java文件”,再单击“下一步”按钮,这将打开“空Java文件”对话框。

4.在文本框“类名”中输入Variables,这将把源代码文件命名为Variables.java。

5.在文本框“包”中输入com.java21days(这就是与前一章不同的步骤)。

6.单击“完成”按钮。

在这里,您指定了类名和包名。包用于将相关的Java程序放在一起,类似于文件系统中的文件夹。在源代码编辑器中,输入程序清单2.1所示的代码。

程序清单2.1 Variables.java的完整源代码

1: package com.java21days;
2:
3: public class Variables {
4:
5: public static void main(String[] arguments) {
6: final char UP = 'U';
7: byte initialLevel = 12;
8: short location = 13250;
9: int score = 3500100;
10: boolean newGame = true;
11:
12: System.out.println("Level: " + initialLevel);
13: System.out.println("Up: " + UP);
14: }
15: }
选择菜单“文件”>“保存”将该文件存盘。NetBeans将自动编译该应用程序——如果没有错误。选择菜单“运行”>“运行文件”以运行该程序,其输出如图2.1所示。

....16-0940yds排版16-0940yds排版21天学通Java(第7版) A20151938屏幕截图CH022.1.TIF{}

图2.1 创建变量并显示它们的值

类所属的包是使用package语句指定的,这种语句必须位于类的最前面:

package com.java21days;
这个类使用了4个局部变量和1个常量,并在第12~13行使用System.out.println()来生成输出。

System.out.println()是一个用于将字符串和其他信息显示到标准输出设备(通常是显示器)上的方法。

这个方法接收一个参数:一个字符串。为了将多个变量或字面值作为println( )的参数,使用运算符+将它们合并成一个字符串。

Java还提供了方法System.out.print(),它不在字符串后回车。要在同一行显示多个字符串,可连续调用方法print(),而不是println()。

相关文章
|
1月前
|
存储 Oracle Java
【详识JAVA语言】数据类型与变量
【详识JAVA语言】数据类型与变量
44 1
【详识JAVA语言】数据类型与变量
|
8月前
|
Java
java-数据类型与变量(上)
java-数据类型与变量(上)
43 0
|
4月前
|
存储 Oracle Java
一文带你了解Java最基本的数据类型和变量
一文带你了解Java最基本的数据类型和变量
40 0
|
8月前
|
存储 Oracle Java
java-数据类型与变量(下)
java-数据类型与变量(下)
52 0
|
8月前
|
存储 Java 编译器
Java的数据类型和变量
Java的数据类型和变量
|
10月前
|
存储 编解码 Oracle
【Java基础篇】数据类型与变量
【Java基础篇】数据类型与变量
82 0
|
10月前
|
Java 编译器
【Java入门】数据类型与变量(三)
【Java入门】数据类型与变量(三)
|
10月前
|
Java
【Java入门】数据类型与变量(一)
【Java入门】数据类型与变量(一)
|
10月前
|
存储 Oracle Java
【Java入门】数据类型与变量(二)
【Java入门】数据类型与变量(二)
|
存储 Java 编译器
【Java|基础篇】数据类型与变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的。