数据类型:
Java是一种强类型语言,这意味着必须为每一个变量声明一种类型。
java数据类型可分为:基本数据类型和引用数据类型
一、数据类型划分
1,基本数据类型:
在栈中可以直接分配内存的数据,以一种特殊的方式指向变量的实体,这种机制类似于C/C++的指针,这类变量在声明时不会分配内存,必须另外进行开辟内存空间的操作。
Java四类八种基本数据类型
第一类:整型 byte short int long
第二类:浮点型 float double
第三类:布尔型 boolean(只有两个值true和false)
第四类:字符型 char
2,引用数据类型
引用数据类型分为以下几类 :
类(class)
接口(interface)
数组
引用数据类型默认值:null
二、基本数据类型详细划分
1,整型:用于表示没有小数部分的数值。也许是赋值。
Java提供了四种基本类型。
常量:123、6000(十进制)、077(八进制)、0x3ABC(十六进制)
int型:内存分配4个字节(byte),1个字节占8位(bit)组成,4个字节占32位。bit有两种状态,分别用0、1来表示。这样计算机就可以使用二进制来存储信息了。取值范围:-2^31~(2^31-1).
byte型:内存分配一个字节,占8位,取值范围:-2^7~(2^7-1).
short型,内存分配2个字节,占16位,取值范围-2^15~(2^15-1).
long型:内存分配8个字节,占64位,取值范围-2^63~(2^63-1).
Java没有任何无符号类型。
长整型数值有一个后缀L。
2,浮点型
浮点类型用于表示有小数部分的数值。
在Java中有两种浮点类型。
float:分配4个字节,占32位,取值范围10^-38~10^38和-10^-38~-10^38
double:分配8个字节,占64位,取值范围大约10^-308~10^308和-10^-308~-10^308
double表示这种类型的数值精度是float类型的两倍(有人称之为双精度数值)。
绝大多数都采用double类型。
Float类型的数值后面有后缀F或f:如3.402F、22.02f
所有的浮点数计算都遵循IEEE 754规范。
表示溢出和出错情况的三个特殊的浮点数值:正无穷大、负无穷大
NaN(不是一个数字),Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY、Double.NaN(与相对应的Float类型的常量一样)分别表示这三个特殊的值。
警告:浮点数值不适用于禁止出现舍入误差的金融计算中。System.out.println(2.0_1.1)将打印出0.89999999999999,而不是人们想象的0.9.主要原因是浮点数值采用二进制系统表示
3,boolean类型
boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。
4,字符型char?
用于表示单个字符。通常用来表示字符常量。
Unicode表中的字符就是一个字符常量,字符常量需使用单引号括起。
char型变量内存分配2个字节,占16位,取值范围:0~65535
内存 x中存储的是97,即字符a在Unicode字符集中的排序位置。因此可以写成char x=97或者char x='a';
转义字符?有些字符不能通过键盘输入到字符串或程序中,这是就需要转义字符。例如:'\n'(换行)、'\b'(退格)、'\t'(水平制表)、'\''(单引号)等。
要想弄明白char类型,就必须了解Unicode编码表。
Unicode字符超过了65536个,其主要原因是增加了大量的汉语、日语和韩国语言中的表意文字。
5,基本数据类型转换
当把一种基本数据类型变量的值赋给另一种基本类型变量时,就会涉及到数据转换,其中不包括布尔类型和字符类型。
按精度从“低”到“高”排列的顺序:byte short int long float double
(1)自动类型转换或隐式类型转换?
当把级别低的变量的值赋值给级别高的变量时,系统自动完后才通过数据类型的转换。
转换前的数据类型与转换后的数据类型兼容
转换后的数据类型的表示范围比转换前的数据类型的转换范围大
(2)强制类型转换或显示类型转换?
当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。
强制类型转换格式:
(想要转换的目标类型)待转换的变量名。
如果视图将一个数值从一种类型强制转换为另一种类型,而又超出目标类型的表示范围,
结果就会截断成一个完全不同的值。例如,(byte)300的实际值为44.
注意:任何类型的数据都向String转型。
6,基本数据类型默认值:
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char \u0000(空,")
boolean