Java教程
Java标识符与关键字
Java变量
Java数据类型
Java运算符
Java控制语句
Java方法
Java面向对象
Java对象的创建和使用
Java封装
Java中static和this
Java继承
Java方法覆盖和多态
Java super
Java基础练习题

Java变量使用

声明变量的语法格式为:数据类型 变量名; //例如: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:编译错误提示信息