数据类型基础

基本数据类型&对象数据类型

1.    基本数据类型(Primitive Types):Java中的基本数据类型包括:int、long、boolean、double、char等。Java中规定,基本数据类型的关键字是以小写字母开头。基本数据类型只有数值,没有ID(在内存中的位置),举个例子,假如有int a=2和int b=2,则Java会认为a和b是完全相同的。同时,基本数据类型是不可变的(Immutable),在栈中分配内存,这使得基本数据类型的开销相对较低。

2.    对象数据类型(Object Types):Java中的对象数据类型包括:Integer、Long、Boolean、Double、String等。Java中规定,对象数据类型的关键字都要以答谢字母开头。对象数据类型既有值又有ID,为了和上面的基本数据类型形成对比,这里再举个例子:假如有Integer a=1和Integer b=1;那么Java来说a!=b,因为他们的ID不同。(如果单纯为了比较它们的值,可以使用equals()方法)。此外,对象数据类型中既有不可变的,也有可变的(Mutable)。其在堆中分配内存,代价相对较高。此外,以上所说的大多数对象数据类型(如Integer、Long、Boolean等)都有与之对应的基本数据类型,在定义一个该类型的变量时,应尽量使用基本数据类型而不是对象数据类型。


静态类型检查&动态类型检查

1.    静态类型检查(Static Checking):静态类型检查在程序运行前进行检查,发现错误,以避免将错误带入运行阶段。静态类型检查可以很大程度上地提高程序的正确性和健壮性。具体来说,静态类型检查的目标包括以下几点:语法错误、类(方法)名称错误、参数数量错误、参数类型错误以及返回值类型错误。静态类型检查可以理解为是对数据类型的检查,与变量的数值无关。

2.    动态类型检查(Dynamic Checking):动态类型检查是指在程序运行的过程中进行检查发现错误。其检查目标包括:非法的参数值、非法的返回值、指针越界以及空指针。动态类型检查和静态类型检查相比,侧重于对数值的检查而不是类型。

Mutability & Immutability

Mutability中文翻译为“可变性”,Immutability中文翻译为“不变性”。对于Immutable的变量,一旦被创建出来其值就不能再被修改,同时,如果该变量是引用类型的,其指向的对象也不能改变。

Immutable的变量在Java中可以使用关键字final来修饰,主义如果编译器无法确定final修饰的变量是否会改变,就会通过静态检查提示错误。同时,对于使用final关键字的过程中,我们需要注意的是:final类型的变量无法被派生出子类且其内部蕴含的方法无法被重写。Immutability对变量的这些要求使得其安全性要比mutable的变量要好,所以在实际的软件构造过程中,应尽量使用immutable变量。下面三张图图为一个区分Mutable和Immutable变量的例子。







猜你喜欢

转载自blog.csdn.net/leoyu1998/article/details/80836320