目录
- 1、字面常量
- 2、数据类型
- 2.1、基本数据类型
- 2.2、引用数据类型
- 3、变量
- 3.1、整型变量
- 3.2、浮点型变量
- 3.3、字符型变量
- 3.4、布尔型变量
- 3.5、类型转换
- 3.6、类型提升
1、字面常量
程序运行期间,固定不变的量是常量。
字母常量的分类:
- 字符串常量:由双引号 “” 括起来的
- 整形常量:直接写的数字,不带小数点
- 浮点数常量:直接写的小数
- 字符常量:由单引号 ‘’ 括起来的单个字符
- 布尔常量:只有两种 true 和 false
- 空常量:null
2、数据类型
Java 中数据类型分为两类:基本数据类型和引用数据类型。
2.1、基本数据类型
基本数据类型分为四类八种:
- 四类:整型、浮点型、字符型、布尔型
- 八种:
注意:
- 无论多少位的操作系统,数据类型的字节数都是固定的,比如:在C语言中,16位操作系统下 int 占2个字节,32位操作系统下占4个字节;而在 Java 中,无论是16位还是32位,int 都占4个字节。
- 在 Java 中,所有表示数值的数据(整型和浮点型)都是有符号位的,即 Java 中不存在无符号数。
- 整型默认是 int 类型,浮点型默认是 double 类型。
- 字节是计算机中表示空间大小的基本单位,是计算机中不可再分单位,没有比1个字节更小的存储单位,1字节包含8个比特位,但是在程序中可以申请单个字节的空间,不可以申请单个比特位的空间。其中 1KB = 1024 B, 1MB = 1024 KB, 1GB = 1024 MB。
2.2、引用数据类型
引用数据类型不是语言自带的,可以理解为用户自定义的类型,比如:字符串类型。
3、变量
在程序中,经常改变的量称为变量,而数据类型就是来定义变量的。定义变量的语法格式是:
数据类型 变量名 = 初始值
3.1、整型变量
- 变量在使用之前要赋初值,否则编译会报错。
- 在给变量赋初值的时候,不能超过变量的最大值,否则会溢出。
- int 的包装类型是 Integer
long 的包装类型是 Long
short 的包装类型是 Short
byte 的包装类型是 Byte - 整形默认是 int 类型,如果给 long 类型变量赋初值需要在值后加上 L 或者 l,一般推荐加上 L。
3.2、浮点型变量
- 浮点型变量包括单精度浮点型 float 和双精度浮点型 double。
- 浮点数默认是 double 类型,如果给 float 类型变量赋初值需要加上 F 或者 f。
- double 的包装类型是 Double
float 的包装类型是 Float - 在 Java 中,int 除以 int 仍然是 int(舍弃小数部分), 如果需要得到小数,则需定义为浮点型变量。
- double 类型的内存布局遵守 IEEE 754 标准,尝试使用有限的内存空间表示可能无限的小数,会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。
3.3、字符型变量
- 字符型的表示方式是单引号+单个字母。
- char 的包装类型是 Character。
- 在计算机中字符实际上是一个整数,在C语言中使用 ASCII 表示字符,字符型变量占一个字节;而在 Java 中使用 Unicode 表示字符,因此字符型变量占两个字节,表示的字符种类也会更多,包括中文。
3.4、布尔型变量
- 布尔型变量用来表示真假,只有两个取值:true 或者 false。
- 和C语言不同,Java 的 boolean 变量和 int 变量不可以相互转换,即不存在0表示 false,非0表示 true 的说法。
- boolean 的包装类型是 Boolean
3.5、类型转换
Java 是强类型编程语言,当不同类型的变量相互赋值时会进行严格的校验;当将一个字面值常量进行赋值的时候,Java 会自动针对数字范围进行检查。类型转换分为自动(隐式)类型转换和强制(显示)类型转换。
- 自动(隐式)类型转换
当数据范围小的转换为数据范围大的数据时,代码不需要经过任何处理,在编译时编译器会自动进行类型转换。 - 强制(显示)类型转换
当数据范围大的转换为数据范围小的数据时,代码需要进行强制转换,否则编译失败。强制转换时可能造成精度丢失,而且强制类型转换不一定可以成功,不相干的类型不可以进行转换。
3.6、类型提升
不同数据类型的数据进行运算时,数据类型小的会被提升为数据类型大的。
注意:由于计算机内存是以4个字节为单位来读写数据,因此为了硬件上实现方便,对于 short、byte类型,会先提升成 int 类型再进行转换。
正确写法: