java基础数据类型
内置数据类型
byte
- byte数据类型是8位、有符号、以二进制补码表示的整数
- 最小值是 -128
- 最大值是 127
- 默认 0
- byte类型用于在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有 int 的 四分之一
short
- 16位的,有符号的二进制补码表示的整数
- 最小值 -32768(-2^15)
- 最大值 32757(2^15-1)
- 默认为 0
- 占用空间为 int 的二分之一
int
- 32位,有符号的以二进制表示的整数
- 最小为 -2,147,483,648(-2^31)
- 最大为 2,147,483,647(2^31-1)
- 默认为0
- 一般的整型变量默认为 int 类型
long
- 64位,有符号以二进制表示的整数
- 最小值为(-2^63)
- 最大值为(2^63-1)
- 默认为 0L
- 一般用于比较大的数
- 后缀要加
L
,最好是大写,容易辨认,小写可能会出现认错
float
- float 是单精度、32位浮点数
- 在存储大型浮点数组时可以节省内存空间
- 默认 0.0f
- 浮点数不能用来表示精确的值,如货币,因为浮点数存在一定的误差
- 后缀的 f 是必须加的
double
- 双精度、64位浮点数
- 浮点数默认为double类型
- double同样不能表示精确值,如货币
- 默认 0.0
boolean
- 表示一位的信息
- 只有 true、false 两个取值
- 只作为一种标志,记录 true/false
- 默认为 false
char
-
单一的 16位 Unicode 字符
-
最小为 \u000(即 0)
-
最大为 \uffff(即 65535)
-
char 数据类型可以存放任何字符
char letter = 'A'
引用类型
- 在java中,引用类型的变量类似 C/C++ 的指针,引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个铁定的类型。变量一旦声明,类型就不能被改变。
- 对象、数组都是引用数据类型
- 所有引用类型的默认值都是null
- 一个引用变量可以用来引用任何与之兼容的类型
java常量
常量在程序运行时不能被修改。使用 final 关键字修饰。
final double PI = 3.1415927;
常量可以小写,但为了便于识别,通常使用全大写。
字符串常量和字符常量都可以包含任何 Unicode 字符。
char a = '\u0001'
String a = "\u0001";
特殊转义字符序列
符号 | 字符含义 |
---|---|
\n | 换行 |
\r | 回车 |
\f | 换页符 |
\b | 退格 |
\0 | 空格符(0x0) |
\s | 空格(0x20) |
\t | 制表符 |
" | 双引号 |
’ | 单引号 |
\ | 反斜杠 |
\ddd | 八进制字符 |
\uxxxx | 16进制Unicode字符 |
自动类型转换
整型,常量,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低到高
byte > short > char > int > long > float > double
注意:
- boolean类型不能转换
- 不能把对象类型转换为不相关的对象
- 把容量大的转为容量小的必须强制类型转换
- 转换过程中可以导致溢出或损失精度
- 浮点数转整数是通过舍弃小数得到,非四舍五入。
自动类型转换
必须满足转换前的数据类型的位数小于转换后的数据类型。
强制类型转换
-
转换的数据类型必须是兼容的(数字转数字等)
-
格式:(type)value type
int i=10; byte b = (byte)i;
隐含强制类型转换
- 整数的默认类型是 int
- 浮点数类型不存在这种情况,因为在定义 float类型时必须在数字后跟上 F或f。