***强类型语言:***要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
**弱类型语言:**与强类型相反
Java的数据类型分为两大类:
基本类型(primitive type):Java提供了8种数据类型来存储数值型、字符型和布尔型数据
引用类型(reference type):类、接口、数组
如图所示
整型
整形数据表示整数,可以是正数,也可以是负数。整数的数据类型可分为字节型、短整型、整形和长整型4种,它们所占内存空间大小和取值范围如下表所示。
| 数据类型 | 关键字 | 内存空间(位) | 取值范围 |
|---|---|---|---|
| 字节型 | byte | 8 | -27~27-1 |
| 短整型 | short | 16 | -215~215-1 |
| 整形 | int | 32 | -231~231-1 |
| 长整型 | long | 64 | -263~263-1 |
浮点型
浮点型数据表示实数(有理数和无理数的总称)可以是正数也可以是负数,浮点型数据分为单精度型和双精度型两种,它们所占内存空间大小和取值范围如下表所示。
| 数据类型 | 关键字 | 内存空间(位) | 取值范围 |
|---|---|---|---|
| 单精度型 | float | 32 | |
| 双精度型 | double | 64 |
浮点型数据有两种表示方法:
1. 小数表示法:由整数部分和小数部分组成,如1.0、3.5 2. 科学表示法:这种方法常用来表示很大或很小的数,方法为在小数表示法后加“E”或“e”及指数部分,值得一提的是,“E”或“e”之前必须要有数字,指数部分当然是可正可负啦,但必须都是整数,如3.2e-5、5.9E-10。
注意!Java程序中浮点型数据默认为double型,在定义float型变量时,必须在数值后加“F”或“f”,对于double型变量来说可在其数值后加”D“或“d”,也可忽略不写
字符型
字符型数据表示单个字符,如字母,数字标点符号或者其他字符,使用关键字char,它是指单引号括起来的一个字符,是区分大小写的,如’a‘和’A’是两个不同的字符。因为Java使用Unicode字符集,所以字符型数据都是无符号的16位整数,范围为 065536,即为0x00000xffff。同时也可以用字符在Unicode字符集中的位置来表示,例如字符a在字符集中的位置为97,所以可表示为如下
| 转义字符 | 含义 | 转义字符 | 含义 |
|---|---|---|---|
| ddd | 1~3位八进制数据所表示的字符,如123 | t | 制表符 |
| uxxxx | 4为十六进制数据所表示的字符,如u01b8 | r | 回车符 |
| ’ | 单引号字符 | n | 换行符 |
| \ | 反斜杠字符 | b | 退格符 |
| " | 双引号字符 | f | 换页符 |
布尔型
布尔型数据只有true和false两个值,分别代表的是逻辑”真“和逻辑“假”,它使用的关键字为boolean,所占的内存空间为8位。(在C或C++中使用1和0表示true(真)、false(假),但在Java中不能用此表示,因此布尔型变量不能参与各种数学运算)
数据类型转换
Java在进行赋值或者运算时要对数据类型进行检查,如果数据类型不匹配将要进行数据类型转换,
数据类型转换由两种方式,为自动(隐式)类型转换和强制(显示)类型转换。
-
自动(隐式)类型转换:当数据类型由优先级较低向高优先级转换时,系统自动完成,无需编程人员进行任何操作,
根据优先级从低到高:(byte、short、char) -> int -> long -> float -> double
-
强制(显示)类型转换:当把优先级高的数据赋值给优先级低的变量时,需要进行强制类型转换,如
int i = 10,j; float x = 10.5f; y = int(x-i);//这里x-i为float类型,因为在运算时float优先级高,自动转换成float类型,而y为int型,必须强制转换



