Java的基本数据类型:int long boolean double char
Java的对象数据类型:Sring BigInteger
对于数据类型:Primitives:只有值但没有ID,无法与其他值进行区分。同时是在栈中分配内存,代价较低。
Object Reference Types:既有ID也有值,是可变的,也可以是不可变的,其在堆中分配内存,代价高昂。
将基本类型包装为对象类型:Boolean Integer Short Long Character Float Double。通常是在定义集合类型的时候使用,一半情况下避免使用。
对于静态类型语言:在编译阶段进行类型检查,所有变量的类型在编译时(在程序运行之前)是已知的因此编译器可以推断出所有表达式的类型同样如此如果a和b被声明为int,那么编译器得出的结论是a+b是int。静态类型检查:可在编译阶段发现错误,避 免了将错误带入到运行阶段,可提高程序正确性/健壮性。并不考虑值,只是关于类型的检查
静态类型检查:语法错误,类名/函数名错误,参数数目错误,参数类型错误,返回值类型错误等。
动态类型语言:在运行阶段进行类型检查。是关于值的检查。
在改变变量的时候有两种情况:1.改变一个变量 2.改变一个变量的值。
改变一个变量:将该变量指向另一个值的存储空间。
改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。
对于定义的变量存在不变性以及可变性。不变性数据类型是一经创建,不改变其值。如果是引用类型(指针),也可以是不变的:一旦确定其指向的对象,不能再被改变。
如果Java编译器不相信您的最终变量在运行时只分配一次,那么它将生成一个编译器错误。所以final提供了静态检查不可变引用。故尽量使用final变量作为输入参数以及局部变量。
final:无法派生子类、无法改变值/引用、无法被子类重写。
对于不变量:如String
而相似的StringBuilder是可变量