从零开始学Java Web开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 变量与常量

变量与常量是程序中最常使用的概念,Java中的变量与常量的概念与其他语言基本相同。变量就是指在程序运行中其值可以被改变的量。例如要计算全班学生的平均成绩,就要知道每个学生的成绩,也就需要把用户所输入的学生成绩保存在程序中的某个地方,这就需要在程序中使用标识符来进行标识,例如score1=80、score2=90这两个标识符的值可以改变,在程序运行过程中可以使score1=60、score2=85,这样score1和score2的值就改变了,因此标识符score1、scoret2就称为变量。

变量有两层含义,一是变量的名称,二是变量的值。变量名称就是用户自己为变量定义的标识符,变量的值就是存储在用变量标识符所标记的存储位置处的数据。

2.3.1 变量的命名规范

Java语言中变量的命名首先要符合Java中的标识符的命名规范。本小节所要说明的是Java变量的标准通用命名规范,虽然这些规范在程序编写过程中不像标识符命名规范那样要求强制遵守,但是这些规范是编写出可读性较强的高质量规范代码必不可缺少的,因为规范的变量命名将会减少代码编写的错误。

Java中变量命名的基本规范如下。

❑ 首字母为小写字母。

❑ 变量的命名要有实际的意义,能够表明所代表的数据的含义。

❑ 命名的方法采用匈牙利命名法,多个单词连接,后面的单词首字母为大写。

规范的变量命名示例如下:

    userName   userID  userPassword  adminName

在变量的命名中,有时由于单词太长,所以在编程过程中经常会使用缩写。例如“password”缩写成“pwd”,一些软件企业还会根据具体的需要把一些常用的长命名进行统一的缩写规定,从而提高编写代码的可读性。

2.3.2 变量的声明

在程序设计过程中要使用变量,首先就要对变量进行声明,然后才可以对变量进行赋值和使用。声明变量一方面是防止对不存在的变量进行操作,另一方面是为变量分配内存空间。

变量声明有两层含义:第一是声明变量的名称,第二是声明变量的数据类型。变量声明的一般格式如下:

    类型名   变量名1[,变量名2] [,变量名3] ……

或者:

    类型名   变量名1[=初值1][,变量名2] [=初值2] [,变量名3] [=初值3] ……

其中,方括号中的内容为可选项。

通过上述格式可以看出,同一类型的多个变量可以在同一条语句中声明,也可以在多条语句中声明,但不同类型的多个变量必须用多条语句声明。

变量声明的示例代码如下:

    int a;               //声明了名为a的int类型的变量
    String userName;      //声明了名字为userName的String(字符串)类型的变量

2.3.3 变量的赋值

变量声明之后,就可以为变量赋值了,变量赋值操作可以在声明一个变量的同时进行,也可以在变量声明后的任何时候进行。变量在声明的同时赋值,这个过程通常被称做变量的初始化。

变量赋值的示例代码如下:

    int count=9;         //声明int类型变量count,并初始化了值整数9
    int total ;          //声明int类型变量total
    total =9*7;          //为变量total赋值整数63
    int i=total ;        //声明int类型变量i,赋初始值total

如果没有对变量进行赋值就使用,那么Java程序编译时将会出现语法错误。下面代码中的变量i没有进行赋值就使用,在编译时将会显示“可能尚未初始化变量i”的错误提示信息。

    public class InitValueError{
         public static void main(String[] args)   {
            int i;       //只声明未初始化变量i的值
            System.out.println(i);
         }
    }

2.3.4 变量的作用域

变量的作用域是指它的存在范围,只有在这个范围内,程序代码才能使用它。变量的作用域是从它被声明的地方开始到它所在代码块的结束处,代码块是指位于一对大括号“{}”以内的代码,一个代码块定义了一个作用域。

变量的作用域决定了变量的生命周期,变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占用内存空间的过程。变量在其作用域内被声明创建,离开其作用域时将被撤销,一个变量的生命周期就被限定在它的作用域中。

按照作用域的不同,Java类中的变量可以分为成员变量和局部变量。

❑ 成员变量:在类的所有方法的外部声明,它的作用域是整个类。

❑ 局部变量:在一个方法的内部或方法的一个代码块的内部声明。如果在一个方法内部声明,它的作用域就是这个方法体;如果在一个方法的某个代码块的内部声明,它的作用域就是这个代码块。

【实例2-1】定义Java类的成员变量和局部变量。

    01  public class Example7{
    02      static int x=1;       //定义成员变量
    03      static int y=3;       //定义成员变量
    04      public static void main(String[] args)
    05      {
    06      int a=2;              //定义局部变量
    07      int b=6;              //定义局部变量
    08      System.out.println("x="+x+" "+"y="+y);
    09      System.out.println("a="+a+" "+"b="+b);
    10      function();
    11     }
    12   public static void function()
    13      {
    14           int c=3;         //定义局部变量
    15           int d=5;         //定义局部变量
    16           System.out.println("x="+x+" "+"y="+y);
    17           System.out.println("c="+c+" "+"d="+d);
    18      }
    19   }

【代码说明】在实例2-1定义的类中,第2行和第3行的变量x、y是声明在类的内部方法的外面,其作用域是整个类,在类的任何地方都可以调用变量x和y。第6行和第7行的局部变量a、b及第14行和第15行的局部变量c、d是在各自的方法体内定义的,因此各局部变量的作用域就是其所在的方法内部。因此,变量a、b只能在main()方法的一对大括号内使用,变量c、d也只能在function()方法的一对大括号内使用。如果在function()方法中添加语句System.out.println ("a="+a+" "+"b="+b),在程序编译时将会出现编译错误,因为变量a、b超出了其作用域。

2.3.5 常量的概念与使用

在程序运行过程中其值始终固定不变的量在Java中被称为常量。按照数据类型的不同,常量又分为整型常量、浮点常量、布尔型常量、字符常量、字符串常量等。

1.整型常量

整型常量在计算机中的表示可以分为十进制(decimal)、十六进制(hexadecimal)或八进制(octal)3种形式。其中,十进制读者都非常熟悉,下面重点介绍其余两种进制形式。

❑ 十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F

以十六进制表示时,需要以0x或0X开头,例如:0x87, 0xAe, 0x34。

❑ 八进制:0 1 2 3 4 5 6 7

八进位必须以0开头,例如:0732、0327

说明

使用long型常量时,最后必须以L做结尾,如:789L。

2.浮点型常量

浮点型常量就是可以带小数点的数据,其表现形式有两种。

❑ 小数点形式,例如:12.37,-0.567等。

❑ 指数形式,例如:2.3E4(表示2.3×104), 2.3E-4(表示2.3×10-4)。

注意

在Java语言中,使用浮点型常量时默认的类型为双精度型,即double型。如果要指定是float型或double型,可以采用在浮点型常量后面加上F(f)或者D(d)的方式,例如:23.34F,-78.34D。

3.字符型常量

字符型常量是由英文字母、数字、特殊字符等的字符所表示,其值就是字符本身。表示法是用两个单引号将字符括起来,例如:'A'、'@'。

另外,与其他编程语言一样,Java的字符集中也包括一些控制字符,但是这些字符是不能显示的,可以通过转义字符来表示。这些转义字符如表2.7所示。

表2.7 转义字符

4.字符串型常量

字符串常量是由两个双引号所括起来的有零个或多个字符组成的字符串,例如:“Hello World!”。一定要弄清空字符串常量和未初始化的字符串变量之间的区别。下面示例代码显示了这两者之间的区别:

    String str1=””;
    String str2;

其中字符串变量str1的值是空字符串常量,而字符串变量str2是未初始化的变量,它的值为null,表示不确定,而不是空字符串。

5.布尔型常量

布尔型常量的值只有两种:true(真)与false(假),它表示逻辑的两种状态。