变量本质上就是代表一个”可操作的存储空间”
不提倡这种"一行声明多个变量"风格,逐一声明每一个变量可以提高程序可读性。
局部变量 | 方法或语句块内部 | 方法/语句块 | 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 |
成员变量 (实例变量) | 类内部,方法外部 | 对象 | 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失; |
静态变量 (类变量) | 类内部,static修饰 | 类 | 类被加载,静态变量就有效;类被卸载,静态变量消失。 |
· 成员变量(也叫实例变量 member variable)
方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终。如果不自行初始化,它会自动初始化成该类型的默认初始值。
表2-3实例变量的默认初始值 | |
数据类型 | 实始值 |
int | 0 |
double | 0.0 |
char | ‘\u0000’ |
boolean | false |
· 静态变量(类变量 static variable)
使用static定义。 从属于类,生命周期伴随类始终,从类加载到卸载。 如果不自行初始化,与成员变量相同会自动初始化成该类型的默认初始值
final修饰叫符号常量,关键字final来定义一个常量。 常量一旦被初始化后不能再更改其值。
变量和常量命名规范(规范是程序员的基本准则,不规范会直接损害你的个人形象):
数据类型
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则: monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则: Man, GoodMan
-
方法名:首字母小写和驼峰原则: run(), runRun()
float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。
Java浮点类型常量有两种表示形式
由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。 浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。 如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
-
十进制数形式,例如:3.14 314.0 0.314
-
科学记数法形式,如314e2 314E2 314E-2
-
浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal bd = BigDecimal.valueOf(1.0);
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
bd = bd.subtract(BigDecimal.valueOf(0.1));
System.out.println(bd);//0.5
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001
}
}