1.常量:在程序运行过程中,其值不可以发生改变的量。
常量又分为直接常量和符号常量。
与C语言不同,Java(直接)不支持常量。但是可以通过声明变量static和final来创建常量。一旦声明了一个静态变量,它们将在编译时加载到内存中,即只有一个副本可用。声明变量final后,就无法再次修改其值。
1.1直接常量
直接常量分类 | 含义 | 举例 |
字符串常量 | 用双引号括起来的多个字符(可以包含0个、一个或多个) | "a"、"abc"、"中国"等 |
整数常量 | 整数 | -10、0、88等 |
小数常量 | 小数 | -5.5、1.0、88.88等 |
字符常量 | 用单引号括起来的一个字符 | 'a'、'5'、'B'、'中'等 |
布尔常量 | 布尔值,表示真假 | 只有两个值true和false |
空常量 | 一个特殊的值,空值 | 值为null |
除空常量外 | 其他常量均可使用输出语句直接输出 | 0123(八进制) 0x123(十六进制) |
1.2符号常量:符号化的常量,也就是给常量取个名字。
定义常量的语法:
static final 数据类型 常量名 = 值
static final double p = 3.1415926
为什么使用符号常量?
(1)便于维护,便于阅读
(2)符号常量相比于直接常量能提供更丰富的信息,增强程序可读性。
2.变量:在程序运行过程中,其值可以发生改变的量。
从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。
变量的本质是内存单元,内存单元可以存储数据,也可以将存储的数据读出来。
变量的定义格式:
1.声明变量并赋值
数据类型 变量名= 初始化值;
int age = 18;2.先声明,后赋值(使用前赋值即可)
数据类型 变量名;
double money;变量名= 初始化值;
money = 55.5;
使用变量时的注意事项:
在同一对花括号中,变量名不能重复。
变量在使用之前,必须初始化(赋值)。
定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。
定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。
3.final变量和常量(静态和final)之间的主要区别
常量和变量就是在内存中做数据交换的一个过程。
常量变量是其值固定的变量,程序中仅存在一个副本。
如果创建不带static关键字的final变量,尽管其值不可修改,但每次创建新对象时都会创建该变量的单独副本。如果常量不可修改,并且整个程序中只有一个副本。
4.final、finally、finalize 的区别?
1)final关键字 :用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,被其修饰的类不可继承。2)finally关键字:异常处理语句结构的一部分(经常与try或者try-catch搭配使用 ) ,表示总是执行。3)finalize:( finalize不是Java中的关键字,只是Object类中的一个默认方法名)Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。该方法更像是一个对象生命周期的临终方法,当该方法被系统调用则代表该对象即将“死亡”,但是需要注意的是,我们主动行为上去调用该方法并不会导致该对象“死亡”,这是一个被动的方法(其实就是回调方法),不需要我们调用。总上所述,对象的finalize()方法尽量不要使用,对象的销毁完全交由垃圾收集器处理,从而减少不必要的复杂行工作。