声明变量的语法格式为:数据类型 变量名; //例如:int i;
数据类型我们在下一章节会详细讲解,目前我们以“int”类型为例,int表示整数类型(注意:int是关键字,不能随意写,必须全部小写)。变量名只要符合标识符命名规则即可,当然也要见名知意,命名规范中还要求变量名首字母小写,后面每个单词首字母大写。例如以下代码:
public class VarTest01 {
public static void main(String[] args) {
int age; //年龄
}
}
这个age变量可以访问吗,我们来试一下,请看代码:
public class VarTest01 {
public static void main(String[] args) {
int age;
System.out.println(age);
}
}
编译报错了,请看下图:
图3-3:编译错误提示信息
以上编译错误信息为:可能尚未初始化变量age,这句话的意思是age变量还没有赋值,也就是说变量age中还没有数据,空间还没有开辟出来,可见,java语言中的变量必须先声明,再赋值才能访问。那么java语言中怎么给变量赋值呢?请看赋值的语法格式:变量名 = 字面量; //字面量就是值
语法中要求“字面量”和“变量的数据类型”一致,不然会出现类型不兼容的错误信息。以上语法当中的“=”是一种运算符,它被称为赋值运算符,赋值运算符右边的表达式优先级较高,也就是说等号右边先执行,将执行结果赋给左边的变量。(注意:java语言中的单等号不是用来判断是否相等的,是为了完成赋值运算。)
接下来我们来修改一下以上错误的代码,让其编译通过并能够运行:
public class VarTest01 {
public static void main(String[] args) {
int age;
age = 20;
System.out.println(age);
}
}
运行的结果是在控制台输出了:20
变量赋值之后可以重新赋值吗?当然可以,要不然怎么能叫变量呢。请看:
public class VarTest01 {
public static void main(String[] args) {
int age;
age = 20;
System.out.println(age);
age = 30;
System.out.println(age);
}
}
重新赋值之后,再次输出到控制台,结果是:30
变量的声明和赋值可以在一行代码上完成吗?可以的,请看代码:
public class VarTest02 {
public static void main(String[] args) {
//声明一个int类型的变量count,赋值15
//声明和赋值一气呵成
int count = 15;
System.out.println(count);
//重新赋值
count = 18;
System.out.println(count);
}
}
在一行上可以同时声明多个变量吗?可以的,请看代码:
public class VarTest03 {
public static void main(String[] args) {
int a, b , c = 300;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
编译出错了,请看下图:
图3-4:编译错误提示信息
根据以上错误提示信息得知,int a , b , c = 300表示声明3个int类型变量,分别起名a,b,c,其中a和b没有赋值,c赋值300。这一点大家需要注意:这行代码并不代表给3个变量全部赋值300哦!要想让以上代码编译通过,在访问变量之前赋上值就行了,可以这样修改:
public class VarTest03 {
public static void main(String[] args) {
int a, b , c = 300;
a = 90;
System.out.println(a);
b = 88;
System.out.println(b);
System.out.println(c);
}
}
在同一个大括号当中,可以声明两个同名的变量吗?不可以的,在同一个大括号当中表示在内存的同一个域当中,在同一块区域上面有两个名字都叫做a的变量,这是不允许的,因为这样程序在运行的时候,java虚拟机也不知道该访问哪个变量了(好比说,你有两个朋友,他们的俩的名字都叫张三,当你们三个人同时在场的时候,你呼张三,其实他俩也不知道你喊谁呢!)。所以,同一个域中变量名不能重名,但是记住:变量是可以重新赋值的。请看以下程序以及编译错误提示信息:
public class VarTest03 {
public static void main(String[] args) {
int a = 10;
int a = 100;
}
}
编译错误提示信息:
图3-5:编译错误提示信息