[TOC]
数据类型
基本数据类型
整数
类型 | 字节 | 取值范围(二进制) | 取值范围(十进制) |
---|---|---|---|
byte | 1字节 | -2^7 ~ 2^7 - 1 | -128~127 |
short | 2字节 | -2^15 ~ 2^15 -1 | -32768 ~ 32767 |
int | 4字节 | -2^31 ~ 2^31 -1 | -2147483648 ~ -2147483647 |
long | 8字节 | -2^63 ~ 2 ^ 63 - 1 | -9223372036854775808 ~ 9223372036854775807 |
二进制是计算机唯一可识别的文本,01010101,规则是逢二进一
1 | // 0000 0001 十进制1 |
有符号数,首位为符号位,符号位为0时,代表整数,为1时代表负数
当byte的最大取值(127)+1时,则有效的8位空间中,符号位发生变化,将128变为了负数
小数/浮点数
类型 | 字节 | 负数取值范围 | 正数取值范围 |
---|---|---|---|
float | 4字节 | -3.4E+38~-1.4E-45 | 1.4E-45 ~ 3.4E+38 |
double | 8字节 | -1.7E+308 ~ 4.9E-324 | 4.9E-324 ~ 1.7 + 308 |
float 为单精度浮点型
double 为双精度浮点型 , Java中任何一个小数,默认类型是double
·浮点型数值采用科学技术法表示:
·2E3 等价于 2×10 ^ 3 (结果:2000.0)
·3E5 等价于 3×10 ^ 5 (结果:300000.0)
注意:double为浮点数的默认类型,如需float类型赋值,需要在值的后面添加F.
1.对于float来讲,取值范围包含int 的2147483647, float取值3.4E38 ,所以整数可直接赋值给float
2.小数的默认类型是double,所以直接给float赋值小数时,有可能赋值的小数不在float的取值范围,所以在给float赋值小数时,需要给小数进行追加F的操作,显示告知计算机此小数为float
布尔类型
类型 | 字节 | 取值范围 | 描述 |
---|---|---|---|
boolean | 1字节 | true / false | 仅可描述“真”或者“假” |
·可直接赋值true / false
·也可赋值一个结果为true / false 的表达式
·注意:Java中的boolean不能参与算数运算
字符
类型 | 字节 | 取值范围(无符号数) | 字符编码 |
---|---|---|---|
char | 2字节 | 0~65535 | Unicode字符集(万国码) |
ASCII码对照表
·Unicode字符集支持ASCII编码(美国标准信息交换码)
Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值。
字符赋值: char c1 =’ A ‘ ; (通过’ ‘描述为 字符赋值)
整数赋值: char c2 = 65 ; (通过十进制数65在字符集中对应的字符赋值)
进制赋值: char c3 = ‘\u0041’ ;(通过十六进制数41在字符集中所对应的字符赋值)
·注意:char类型也支持整数表现形式,但char类型是无符号数,其中所有值均为正数。取值范围:0~65535
转义字符
·如果需要在程序中输出一个单引号字符,该如何完成?
1 | public class TestChar{ |
·为解决这一问题,Java采用了转义字符来表示单引号和一些特殊符号。
转义字符 | 描述 |
---|---|
\n | 换行符 |
\t | 缩进(制表位) |
\ | 反斜线 |
\ ‘ | 单引号 |
\ “ | 双引号 |
注意:char类型是支持\转义
使用\将”将本身具有特殊含义的字符“转换成”普通字符
使用\将“普通字符”转换成“本身具有特殊含义的字符
引用数据类型
字符串
类型 | 取值范围 | 字符编码 |
---|---|---|
String | 任何“ ”之间的字面值 | Unicode字符序列 |
- 任何“ ”之间的内容都是字符串,包括空格
类型转换
自动类型转换
- 两种类型相互兼容
- 目标类型大于原类型
举个例子
1 | short s = 123 ; |
强制类型转换
- 两种类型相互兼容
- 目标类型小于原类型
1 | //两种类型兼容,目标类型小于原类型 |
注意:
通过在原类型前面,加上(目标类型),达到强制类型转换的目的,但是有可能会失去精度
比如: 小数强转为整数 ,则失去精度,小数点后的值无法保留。
强制类型转换规则
整数长度足够,数据完整
例:1
2int i = 100;
byte b =(byte)i; //b=100整数长度不够,数据截断
例:1
2int i =10000;
byte b =(byte)i; //b=16 (符号位变换,可能变为负数)小数强转成整数,数据截断
例:1
2double d =2.5;
int i =(int) d ; //i =2(小数位舍掉)字符整数互转,数据完整
例:1
2char c =65;
int i = c ; //i = 65boolean的取值为true / false ,不可与其他类型转换