数据类型可以理解是对内存位置的一个抽象表达方式。接触每一种语言的时候,都会存在数据类型的认识,有简单的、复杂的,各种数据类型都需要在学习初期去了解。JAVA是强类型语言,所以JAVAF对于数据类型的规范会相对严格。在JAVA里,本质上将数据类型分为两种:简单类型和复杂类型。
简单类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。
复杂类型:JAVA语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复杂数据类型一般是通过类和接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。
JAVA中的基本类型:
1、概念:
JAVA中的简单类型从概念上分为四种:实数、整数、字符、布尔值。但是有一点需要说明的是,JAVA里
面只有八中原始类型,其列表如下:
实数:double、float
整数:byte、short、int、long
字符:char
布尔值:boolean
复杂类型和基本数据类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:所有的简单数据类型不存在“引用”的概念,简单数据类型都是直接存储在内存的栈上的,数据类型的值是存储在栈空间里面的,而JAVA语言里面只有这八种数据类型是这种存储模型;而其他的只要是继承于Object类的复杂类型都是按照JAVA里面存储对象的内存模型来进行数据存储的,使用JAVA内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值是存储在内存堆上的。
详细介绍:
int:int为整数类型, 在存储的时候,用4个字节存储,范围为-2,147,483,648 到 2,147,483,647 在变量初始化的时候,int类型的默认值为0。
short:short也属于整数类型,在存储的时候,用2个字节存储,范围为-32,768 到 32,767 ,在变量初始化的时候,short类型的默认值为0。
long:long也属于整数类型,在存储的时候,用8个字节存储,范围为-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 ,在变量初始化的时候long类型的默认值为0L或0l,也可以直接写为0。
byte:byte同样属于整数类型,在存储的时候,用1个字节来存储,范围为-128到127,在变量初始化的时候,byte类型的默认值也为0。
float:float属于实数类型,在存储的时候,用4个字节来存储,范围为32位 IEEEE 754单精度范围,在变量初始化的时候,float的默认值为0.0f或者0.0F,也可以直接写成0.0。
double:double同样属于实数类型,在存储的时候,用8个字节来存储,范围为64为 IEEE 754双精度范围,在变量初始化的时候,double的默认值为0.0。
char:char属于字符类型,在存储的时候用2个字节来存储,因为JAVA本身的字符集不是用ASCII码来进行存储,是使用16位Unicode字符集,它的字符范围即是Unicode的字符范围,在变量初始化的时候,char类型的默认值为'u0000'。
boolean:boolean属于布尔类型,在存储的时候不使用字节,仅仅使用1位来存储,范围仅仅为0和1,其字面量为true和false,而boolean变量在初始化的时候变量的默认值为false。
在基本数据类型,进行强制转换过程中,唯独可能特殊的是char和int是可以转换的,不过会使用char的ASCII码值,比如:int a=(int)'a'; a的值在转换过后输出的话,值为97;
在精度运算时尽量避免使用float和double,特别是我们常用的货币运算。使用float和double会损失精度。建议使用JAVA中,专门为进行精度运算提供的BigInterger与BigDecimal类。
一个字母字符等于1个字节,一个汉字字符等于两个字节,一个字节等于8个二进制位,1024个字节等于1KB。