目录
1.变量
变量指的是程序运行时可变的量。在程序运行时,才知道变量当中放入的值是多少。相当于开辟一块内存空间来保存一些数据。
类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。
我们所讨论的“变量”主要和我们的“内存”这样的硬件设备密切相关。
1.1.变量及作用域
变量有基本类型和引用类型。同时变量按照作用域来分,有局部变量,类成员变量,方法参数和异常处理参数。
1.1.1.局部变量
在一个方法或由一对{}表示的代码块内定义的变量称为局部变量,有时也称为自动变量,临时变量或堆栈变量。局部变量的作用域是所在的方法或代码块,当程序执行流进入所在的方法(或代码块)时创建,在方法(或代码块)退出时消亡。
1.1.2.类成员变量
在方法外进行声明且属于一个类的定义体的变量称为类成员变量。类成员变量的作用域是整个类,有两种类型:
一种是用static关键字声明的类变量,该变量在类加载时创建,并且只要所属的类存在,该变量就将一直存在;
另一种是声明中没有static关键字的变量,称为实例变量。实例变量在调用类的构造方法(new XXX())创建实例对象时创建,并且只要有引用指向变量所属的对象,该变量就将存在。
1.1.3.方法参数
方法参数定义了方法调用时传递的参数,其作用域就是所在的方法。当方法被调用时创建方法参数变量,而在方法运行结束时,这些变量就消亡了。
1.1.4.异常处理器(catch语句块)参数
异常处理器参数是catch语句块的入口参数。这种参数的作用域是catch语句后由{}表示的语句块。
1.2.变量的初始化
在Java中,变量在使用前必须进行初始化。当创建一个对象时,对象所包含的实例变量在存储空间分配后就由系统按照下表列出的值进行初始化。
变量类型 | 初始值 | 变量类型 | 初始值 |
byte | 0 | double | 0.0D |
short | 0 | char | '\u0000' |
int | 0 | boolean | false |
long | 0L | 所有引用型(类,接口,数组) | null |
float | 0.0F |
类成员变量是系统自动进行初始化,而局部变量必须在使用前手工赋初值进行初始化。如果编译器确定没有经过初始化,就将产生编译错误。
2.常量
定义时必须初始化,并且之后无法修改。每种类型的变量对应着一种相同类型的常量。常量主要有两种体现形式:
2.1.字面值常量
10 //int (十进制)
0b10 //int(二进制,由数字0b或0B开头),也就是十进制的2
010 //int (八进制,由数字0开头),也就是十进制的8
0x10 //int (十六进制,由数字0x或0X开头),也就是十进制的16
10L //long 也可写作10l(小写的L)
1.0 //double 也可写作1.0d或1.0D
1.5e2 //double 科学计数法表示,相当于1.5 * 10 ^ 2
1.0f //float 也可写作1.0F
true //boolean 同样还有false
'a' //char
"abc" //String
2.2.final关键字修饰的常量
final int A = 10;
a = 20; //编译出错,无法为最终变量a分配值
最好与static关键字搭配使用。因为final int a = 10;是类中的成员变量,在堆上存储。当new多个对象时,在堆上会存多个值一样的对象,浪费空间。不如直接升级为静态变量,只用一个空间。
static final String COUNTRY = "中国";