Java中的变量

概要:Java中的变量定义,变量赋值,动态赋值,以及常量的定义,还有标识符的命名规范。

变量

变量是Java程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。

在Java语言中,所有的变量在使用前必须声明。先声明再使用。

int i; 声明一个变量
double money = 2.5;声明变量并赋值
folat f1,f2; 一次声明多个变量
int x = 3, y, z = 5; 声明多个变量并赋值

赋值是将一个值指定给一个变量,Java中将等号 = 定义为赋值操作符。

赋值还可以这样,变量同时出现在 = 两边:
x = x + 1;

数学中, x = x + 1 是不符合实际的,在Java中,x = x + 1 是赋值操作。

变量名必须为赋值操作符的左边

2 = i是不合法的,i+3=i是不合法的。

变量类型

Java中存在的变量类型:

  • 类变量:独立于方法之外的变量,用 static 修饰。
  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量:方法中的变量。
public class VariableDemo {
    static int i = 3; // 类变量
    float f = 3.45f; // 实例变量
    private char c = 'a'; // 私有类变量
    public static void main(String[] args) {
        double m = 3.5; // 局部变量
    }
}

大多数其他计算机语言定义了两大类作用域:全局和局部。然而,这些传统型的作用域不适合Java的严格的面向对象的模型。当然将一个变量定义为全局变量是可行的,但这是例外而不是规则。

动态初始化

上面的例子都是使用确定的值初始化变量,Java也允许在变量声明时使用任何有效的表达式来动态地初始化变量。动态初始化又称为赋值表达式。

public static void main(String[] args) {
    double radius = 3;
    double perimeter = 2*3.14*radius;
    System.out.println("圆的周长:"+perimeter);
}

这里,定义了两个局部变量 radius 、perimeter。第一个变量初始化为常量 3。然而圆形的周长使用动态初始化。

常量

变量在赋值以后可以被在此赋值(修改)。

int value = 3;
value = 5;

Java中提供了常量来表示从不改变的数据。

Java 中常量可以理解为 final 修饰的变量。

语法格式:

final type CONSTANT_NAME = value;

常量必须在同一条语句中声明和赋值。
单词 final 是声明常量的 Java 关键字。
习惯上,常量中的所有字母都大写。

之前计算圆的周长,需要用到 π,它是一个不变的值,就可以定义为常量。

public static void main(String[] args) {
    final double PI = 3.14;
    double radius = 3;
    double perimeter = 2*PI*radius;
    System.out.println("圆的周长:"+perimeter);
}

一般认为,定义常量有如下几个好处:

  • 当一个值多次使用的时候,不必重复输入;
  • 如果必须改常量值(例如,将PI 的值从 3.14 改为 3.14159),只需在源代码中的一个地方做改动
  • 给常量赋一个描述性名字会提高程序易读性。

标识符

之前定义变量的时候,使用的都是简单的字母或单词。实际上变量标识符是有一定规则的,不能随便写。

标识符是为了标识程序中诸如类、方法和变量等元素而采用的命令。

Java规定,标识符identifier需要满足一下规则:

  • 字母数字下划线_美元符号$组成
  • 不能以数字开头
  • 不能是关键字,参见 java中的关键字
  • 不能用truefalsenull
  • 长度任意
  • 大小写敏感
规则上将,标识符不能以数字开头,但是一般只建议标识符以字母开头。

规则很简单,但是起一个好的名字需要注意的非常多:

  • 尽量见名知意,通过名称就能知道其含义
  • 下划线_开头的变量在某些语言中被理解为私有,但是java中有private关键字标识私有,所有尽量少用下划线开头命名
  • 美元符号$一般在机器自动生成的代码中出现,所以尽量少用
  • 缩写比全称更容易理解,允许的情况下,尽量用全称。例如,用 emp 定义一个员工变量就不如 用employee
  • 尽量少用一个字母,之前为了演示方便,使用了 a、c、f、m 等单个字母,这并不是可取的。但是在之后的循环执行语句中,会常常见到一些代码片段中使用诸如i,j,k等变量名。
标识符的规则如果不遵守,编译器直接报错,不能通过编译 javac

命名规范

给标识符起一个合适的名字,是代码专业性重要的一环。

在Java中,一般有如下的命名规范:

  • 小写字母开头命名变量和方法名,如”area”、”money”、”save”
  • 多个单词组合时,第一个单词的字母小写,而后面每个单词的首字母大写。这种规范被称为驼峰命名法[因为名字中的大写字符类似于骆驼的驼峰],如”dataType”、”nextLine”
  • 类名首字母大写,而后面每个单词的首字母大写,如”Student”、”StringBuffer”
  • 常量中的所有字母大写,两个单词间用下划线连接,如”PI”、”MIN_VALUE”
  • 变量名用名词,如”address”、”age”、”endTime”
  • 方法名用动词开头,如”insert”、”test”、”getArea”
  • 尽量不要使用类库中的类名定义自己的类,防止出现歧义,如”System”、”Object”
命名规范不遵守,可以通过编译,代码不会报错,但是不规范的命名显得代码很 low
标签: