一、数据类型
数据类型在计算机语言里面,可以理解为针对内存的一种抽象的表达方式。不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。
二、Java基本数据类型
Java是强类型语言,所以Java对于数据类型的规范会相对严格。数据类型可以说是语言中最基本的单元定义,在Java里面,本质上将数据类型分为两种:基本类型和引用数据类型。(引用类型可参考这篇博客)
基本类型: 简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。
在java中,一共有8种基本类型,其中有4种整型类型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和一种用于表示真值的boolean类型。
一个字节等于8位
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0
int:整型,在内存中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0
long:长整型,在内存中占64位,即8个字节,取值范围-2^63~2^63-1,默认值0L
float:单精度浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字
(与double的区别在于float类型有效小数点只有6~7位),默认值0.0f
double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节,默认值0.0d
char:字符型,用于存储单个字符,在内存中占16位,即2个字节,取值范围0~65535,默认值是\u0000 即空值
boolean:布尔类型,在内存中占8位,即1个字节,用于判断真或假,默认值false
基本数据类型的存储原理: 所有的简单数据类型不存在“引用”的概念,基本数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面八种基本数据类型就是这种存储模型。
1.整型
通常情况下int类型最常用,表示超大量数据的时候就需要用到long类型,byte和short类型主要用于特定的应用场合。
在Java中,整型的范围与运行Java代码的机器无关(在C和C++中,int和long等类型的大小与目标平台相关)。这就解决了软件在平台间或者再不同操作系统间移植带来的问题。
长整型(long)数值需要加后缀L或l;十六进制数值需要加前缀0或0X;八进制需要加前缀0;二进制需要加0b或0B。
long a=0b111L;
long b=0xacdL;
long c=0123L;
2.浮点类型
double表示这种类型的数值精度是float类型的两倍,绝大部分应用程序都采用double类型。添加后缀d或D。
float类型的数值有一个后缀F或f(例如3.5f)。没有后缀F的浮点数值,默认为double类型。
我们知道float容易失去精度,但并不是像网上说的在第七位失去精度,前几位也会失去精度。
浮点数值计算请看此篇博客的详细讲解。
3.char类型
char类型的字面量值要用单引号括起来char e='C';
要想弄清char类型,就必须了解Unicode编码机制。我们可以查看博文:计算机基础-----编码出现的原因、发展过程以及查看修改
4.boolean类型
boolean类型有两个值:false和true,用来判定逻辑条件。整型值和布尔值之间不能进行相互转换。
详细可参看该博客:JAVA中分为基本数据类型及引用数据类型