Java Primitive data type
变量variable和成员变量field(field也是一个类,此处不讨论)
- 对象变量,也称作非静态fields,指类实例化后的对象,其变量是单独于每一个对象和类的;
- 类变量,静态fields,是类中的变量,在有效值域里面有且只有这个变量的存在,即使该类实例化成多个对象,也不影响;
- 局部变量和形式参数都是存在成员函数的值域里,并且不属于 是fields;
原始数据类型概览。
byte b = 0; // 这是8bits的有符号整型二补数
short s = 0; // 这是16bits的有符号整型二补数
int i = 0; // 这是32bits的有符号整型二补数,开发者比较常用的数据类型
/* java中的unsigned int有些特别,要通过结合Integer class用int型才能用做unsigned int,而且需要用到class的method来做算术操作 */
long l = 0L; // 这是64bits的有符号有符号整型二补数,后面必须跟L或者l,不然有可能会定义为int
/* unsigned long 同上,结合Long class */
float f = 0.0f // 这是单精度32bits的IEEE 754标准浮点数,字面值要跟f才能定义为float,否则有可能定义为double
double db = 0.0d // 这是双精度64bits的IEEE 754标准浮点数
/* 不要直接用关系运算符比较浮点数,不准确的 */
boolean bl = false; // 布尔判断
char c = '\u0000'; // 16bits unicode字符
/* 如果用“”初始化一个字面值字符串,要用Stirng,并且该String是不变的,有点类似const char*的感觉 */
有时候我们会声明一个数据类型,但是没有赋值,虽然这个习惯不太好,但是还是有人这么做;当只声明没有赋值时,javac编译器会赋默认值,默认值就是上面我用的这些初始值了;但是注意⚠️局部变量就不一定有这些默认初始值所以尽量还是要初始化定义
字面值。
Java有个有意思的地方,但是应该不常用,就是在字面值的digits之间可以用_隔开,注意,是digits之间:
// valid underscore
long creditCardNum = 123_456_789_432L
float pi = 3.1_41_5f;
// invalid underscore
float pi1 = 3_.1415F;
int x4 = 0_x52;
int x7 = 0x52_;
@ 西行修真的伍师弟
更新日志
28/05/2020 updated