Java语言是静态类型语言,这意味着每个变量和表达式在编译的时候是类型是已知的。
Java语言也是强类型语言,因为类型限制了变量能容纳的值,限制了表达式能生成的值,限制了操作符支持的值,决定了操作符的含义。强静态类型可以在编译时检测错误。
Java语言的类型分为两大类:原始类型和引用类型。
Java语言有两大种类的类型:primitive types(原始类型)和reference types(引用类型)
相应的,可用于存储变量、传递参数、方法返回值和被操作的数据值的类型包括:基本值和引用值。
原始类型是Java语言用预留关键字预先定义好的。
基本值之间不共享状态。
原始类型分类如下:
PrimitiveType:
{Annotation} NumericType
{Annotation} boolean
NumericType:
IntegralType
FloatingPointType
IntegralType:
(one of)
byte short int long char
FloatingPointType:
(one of)
float double
引用类型包括4个种类:类、接口、类型变量和数组类型,具体分类如下:
ReferenceType:
ClassOrInterfaceType
TypeVariable
ArrayType
ClassOrInterfaceType:
ClassType
InterfaceType
ClassType:
{Annotation} Identifier [TypeArguments]
ClassOrInterfaceType . {Annotation} Identifier [TypeArguments]
InterfaceType:
ClassType
TypeVariable:
{Annotation} Identifier
ArrayType:
PrimitiveType Dims
ClassOrInterfaceType Dims
TypeVariable Dims
Dims:
{Annotation} [ ] {{Annotation} [ ]}
示例:
class Point { int[] metrics; }
interface Move { void move(int deltax, int deltay); }
类型变量是一个非限定标识符,用于类、接口、方法和构造主体中的类型。
类型变量是通过声明一个泛型类、泛型接口、泛型方法或泛型构造函数的类型参数引入的。(参考8.1.2、9.1.2、8.4.4、8.8.4)
每个声明为类型参数的类型变量都有一个边界。如果一个类型变量没有声明边界,那么假定为Object。如果声明了边界,那么它包含如下之一:
变量是一个存储位置,并关联了一个类型,有时候称之为编译时类型,是一个原始类型或引用类型。
变量的值通过赋值或者++、--前缀或后缀运算符。
原始类型的变量通常容纳准确的原始类型的原始值。