我们都知道,java中会有变量,变量会被赋值,那么,值不能被改变的量我们称为常量,值能够被改变的量称为变量,不论是变量或常量,都必须要使用合法的标识符去表示。
一:标识符
什么是标识符呢?简单的说,就如人的名字一样,它也表示一个名字,只是是用来标识类名、变量名、方法名、数组名等的字符序列。
在java中,我们规定标识符是由任意顺序的字母、下划线(_)、美元符号($)和数字组成,并且第一个字符不能是数字,而且还不能是java中的保留关键字。
在下面的代码中,不合法的标识符会出现编译错误。
public static void demo(){
//合法的标识符
String name;
int user_age;
float $price;
//不合法的标识符
int 4word;
int true;
}
注意:在java语言里面,是严格区分大小写的,比如name和Name就表示两个不同的标识符,而且java语言是使用unicode标准字符集的,最多可标识65535个字符。
什么是java关键字呢?就是在java里它们已经被赋予了特定的意义,所以不能使用这些关键字来作为标识符。
int | public | this | finally | boolean | abstract |
continue | float | long | short | throw | throws |
return | break | for | static | new | interface |
if | goto | default | byte | do | case |
strictfp | package | super | void | try | switch |
else | catch | implements | private | final | class |
extends | volatile | while | synchronized | instanceof | char |
protect | importd | transient | implements | dafaule | double |
二:变量的声明
定义变量,首先需要定义变量的数据类型,而且在程序运行过程中,它的值是可以变化的,所以称为变量。
而且需要准守一下规则:
1:变量名要是合法的标识符;
2:不能是java关键字;
3:不能重复;
4:应该选择有意义的字符作为变量名。
public static void main(String[] args) {
int a = 1; //定义int类型的变量
char c = 'w'; //定义char类型的变量
a = 3;
System.out.println(a);//输出结果为3
}
上述代码,我们定义了两个变量,可以看到a先赋值为1,然后赋值为3,最终输出结果为3,也就是说,a是变量,可以更改它的值。
三:常量的声明
什么是常量?在程序运行过程中,值一直不变的量称作常量,也被叫做"final变量"。常量在程序中只能被赋值一次,而且需要通过final关键字进行限定:final 数据类型 常量名称 = 值。常量它在为所有对象共享时是非常有用的。
注意:常量名通常来说,都是使用大写字母来表示,但是呢,也不是非要这样做,只是这样能够清楚的表示正在使用的是常量。
public static void finalCl(){
final int AGE; //定义int类型的常量
final String NAME = "good"; //定义String类型的常量并赋值
NAME = "hello"; //编译错误
System.out.println(NAME);
}
上述代码,定义了常量NAME,当再次赋值时,会出现编译错误,也就是说常量只能赋值一次。
四:变量的有效范围
变量的有效范围是指程序代码能够访问这个变量的区域,如果超出了这个区域,会出现编译错误,一般根据有效范围,分为成员变量(全局变量)和局部变量。
⒈:成员变量
什么是成员变量呢?一般来说,在类中定义的变量被称为成员变量,它能作用于整个类,也就是在整个类里我们都可以使用它。类中的成员变量又可以分为静态变量和实例变量。
在变量前面加上static,这样的变量就称作静态变量,静态变量可以跨类,也就是在其他类中也可以使用这个变量,直接以"类名.静态变量"就可以在其他类中使用了。
public class Bsf {
static int price = 22;//静态变量
int age = 22; //实例变量
}
public class Number {
public static void main(String[] args) {
System.out.println(Bsf.price); //可以使用Bsf中的静态变量price
}
}
2:局部变量
在类里面的方法中定义的变量称为局部变量,它只作用在这个方法内,并且方法的参数也是局部变量;当方法被调用时,java虚拟机会为该变量分配内存空间,当方法执行结束后,会释放该内存空间,局部变量也将会销毁。
注意:局部变量可以与成员变量名字相同,这个时候成员变量将被隐藏,即这个成员变量在这个方法中暂时失效了。
public class Val {
static int time = 33; //定义成员变量time
public static void main(String[] args) {
int time = 32; //定义局部变量time
int age = 12; //定义局部变量age
System.out.println(time); //输出32
demo();
}
public static void demo(){
//System.out.println(age); //编译错误
System.out.println(time); //输出33
}
}
上述代码中,可以看到,定义了成员变量time,在main方法中定义了局部变量time,此时,输出time为32,也就是成员变量在这个方法中暂时失效了,而且定义的局部变量age只能作用于main方法中,在demo方法中调用会出现编译错误。