四.数据类型

老子叫甜甜 提交于 2020-03-08 16:43:15

1.Java的数据存储规范

​ ​ Java是强类型语言:要求数据的类型与数据的值严格保持一致

2.Java的数据类型分类(两大类)

​ 1.简单类型/基本类型/原始类型

​ ​ ​ ①整数类型

数据类型 字节数 可表示的数据范围(二进制) 可表示的数据范围(十进制)
byte 1B -2 7~27-1 -128~127
short 2B -215~215-1 -32768~32767
int 4B -231~231-1 -2147483648~2147483647
long 8B -263~263-1 -9223372036854775808~9223372036854775807

​ ​ ​ ​ 提示:

​​ ​ 一个字节在二进制占8位;表示数据的时候,第一位为符号位,0代表正数,1代表负数。

​ ​ ​ ②小数/浮点数类型

数据类型 字节数 负数取值范围(十进制) 整数取值范围(十进制) 精度
float 4B -3.4E+38~1.4E-45 1.4E-45~3.4E+38 7位
double 8B -1.7E+308~4.9E-324 4.9E-324~1.7E+308 15位

​ ​ ​ ​ 提示:

​​ ​ -3.4E+38表示为-3.4乘以10的38次方分之一

​ ​ ​ ③字符类型

数据类型 字节数 取值范围(无符号数) 字符编码
char 2B 0 ~ 65535 Unicode(万国码)

​​ ​ 字符表示的三种方式:

​​ ​ ​ Ⅰ.使用单引号引起来表示一个字符。如:‘a’,'b’等

​ ​ ​ Ⅱ.使用整数表示一个字符。如:char A=64,char a=96

​ ​ ​ Ⅲ.使用unicode去表示一个字符。如:char c = ‘\u0041’; 字符的默认值

​ 转义字符:

\t 水平跳格
\n 换行
\’ 单引号
\" 双引号
\\ 反斜杠

​ ​ ​ ④布尔类型

数据类型 字节数 取值范围
boolean 1B true/false

​ ​ ​ ​ 注意:

	1. 整数默认是int类型
	2. 浮点数默认是double类型
	3. 长整型后缀用L或者l标记,建议用使用L(在定义数据类型,给的初始化值如果是整数,默认初始化值是int类型、小数默认是double,但是如果初始化值小于int类型数值范围,不加L也可以。但是建议加L,以便区分)
	4. 单精度浮点数用F或者f标记。建议使用F(如果不加,会报错;因为初始化值是double类型,而a是float类型,从double转换到float可能会有损失)
	5. float类型使用科学计数法储存的,可存储的范围过大,但是不够精确,小数点之后7位是精确的。
	6. double类型使用科学计数法存储的,可存储的范围过大,但是不够精确,小数点之后15位是精确的,16位是否精确还不确定。

2.引用类型/对象类型

​ ​ 类、字符串、接口、数组等等,除了八种基本数据类型之外其他都是引用类型/对象类型

3.数据类型转换

​​ 1.默认转换(自动类型提升)

​ ​ ​ 默认转换就是从小到大的转换

​ ​ ​ 条件

​ ​ ​ ​ ①两种数据之间必须能够相互兼容

​ ​ ​ ​ ②目标数据类型比源数据类型大

​ ​ ​ 规则

​ ​ ​ ​ byte–>short–>int–>long–>float–>double

​​  ​ ​ byte,short,char相互之间不能转换,它们参与运算首先转换为int类型

​​  ​ 不同数据类型变量参与运算图解

在这里插入图片描述

​ 2.强制类型转换

​​  ​ 强制类型转换就是从大到小的转换

​ ​ ​ 条件

​ ​ ​ ​ ①两种数据之间必须相互兼容

​​  ​ ​ ②目标数据类型比源数据类型小

​​  ​ 语法

​ ​ ​ ​ 目标数据类型 变量名 = (目标数据类型)源数据变量名/源数据值;

​​  ​ 注意

​​  ​ ​ Ⅰ.整数的长度相互匹配,直接赋值,数据是完整的

​ ​ ​ ​ Ⅱ.整数的长度不匹配,数据截断,舍弃高位

​ ​ ​ ​ Ⅲ.浮点数转整数,数据截断,舍弃小数位

​ ​ ​ ​ Ⅳ.布尔类型数据不参与转换

​​  ​ ​ Ⅴ.不要随意去使用强制类型转换,因为它隐含了精度损失问题

 3.数据类型参与运算规则

​​  ​ 进行算数运算时:

​ ​ ​ ​ 两个操作数有一个为double,计算结果提升为double。

​ ​ ​ ​ 如果操作数中没有double,有一个为float,计算结果提升为float。

​ ​ ​ ​ 如果操作数中没有float,有一个long,计算结果提升为long。

​ ​ ​ ​ 如果操作数中没有long,有一个为int,计算结果提升为int。

​​  ​ ​ 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
​​  ​ ​ 如果操作数中没有float,有一个long,计算结果提升为long。

​​  ​ ​ 如果操作数中没有long,有一个为int,计算结果提升为int。

​​  ​ ​ 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。

​​  ​ 特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!