变量是Java程序中基本的存储单元,变量名有三个基本要素:数据类型、变量名和值。变量名是一块内存单元的名称,就像门牌号一样,通过变量可以找到它表示的内存单元,并对这块内存单元进行操作。在Java中变量必须声明后使用。Java有以下数据类型:
本文介绍Java的八种基本数据类型。Java的基本数据类型的长度在不同平台都是一致的,以保证可移植性。
一、整型
1.byte:占一个字节,范围为 -128~127.
2.short:占两个字节,范围为 -32768~32767.
3.int:占四个字节,范围为 -~.
4.long:占八个字节,范围为 .
Java整型常量(字面值)默认为int类型,在字面值后加 'l' 或 'L' 表示这个字面值为long类型。
整型在计算机中以反码表示,正数的反码与它的原码一致,负数的反码为它的原码除符号位按位取反再加1.
二、浮点型
1.float(单精度):占四个字节,范围为 .
2.double(双精度):占八个字节,范围为 .
tips:
1. 在计算机中,浮点数的存储形式为:符号位+指数位+尾数位,单精度和双精度浮点数有不同的指数位和尾数位,具体细节在计算机组成原理中可以查到。
2.浮点数字面值默认为double类型,所以在初始化float类型的变量时,需要在字面值后加上 'f' 或 'F' 将其转换为float类型,否则编译时会报错。
3.double的精度比float高,通常情况下应该使用double。
可以看到,float可以表示到小数点后七位,而double可以表示到小数点后16位。
4.浮点数的表示形式:十进制表示(如果整数位为0,则0可以省略,但小数点不能省略)、科学计数法。
5.两个浮点数不能使用等于运算符判断是否相等,尤其是两个浮点数已经经过运算或处理,因为浮点数的表示和运算受制于精度,所以可能无法准确表示浮点数。判断两个浮点数是否相等应该使用容差法。
java变量基础语法
三、字符型
char:在Java中,字符型使用Unicode码,占两个字节,可以存放汉字。
1.字符型变量可以存储转义字符表示的字符,如换行符等。
2.字符型变量在计算机中以整数的形式存储。
3.因为字符型变量以整数形式存储,所以它相当于一个整数,可以参与运算。
几种编码方式:
- ASCII码:占一个字节,总共有128个字符,首位作为奇偶校验码,无法表示所有字符。
- Unicode码:占两个字节,字母和汉字以及其他字符都使用两个字节表示,最多表示65536个字符,可以兼容ASCII码。
- UTF-8:是Unicode码的一种实现方式,是一种变长编码,有单字节(表示ASCII字符)、双字节、三字节(汉字等)和四字节模式。还有UTF-16等方式。
- 其他编码:GBK(全称《汉字内码扩展规范》)、GB2312(被GBK兼容)、BIG5(繁体字的编码)。
四、布尔类型
boolean:占一个字节,只有true和false两种取值,用于逻辑运算。
五、自动类型转换
下图是数值类型的转换方向,自动转换不能逆向进行。
- 当有多种类型参与运算时,会将这些类型的数据都自动转换为参与运算的类型中精度最高的那个类型,并且运算的结果也是这个类型。
- 高精度的类型无法自动转换为低精度的类型。
- 整数字面值的类型默认为int,能够使用字面值初始化短整型是因为:先判断字面值是否在该类型的范围内,如果在,那么就会转换成该类型,否则会报错。使用字面值给短整型赋值,只要赋值运算符右侧的表达式中全为字面值,并且表达式的结果在短整型范围内,赋值就可以正确进行,如果表达式中有变量,那么就会报错。
- (byte,short)和char之间无法自动类型转换。
- 短整型(byte,short,char)在参与运算时会整型提升。
- boolean类型不会发生自动类型转换,不能参与运算。
六、强制类型转换
强制类型转换可以将一个类型强制转换成另一个类型(如果合法的话),但这可能会造成精度损失。
七、基本类型转换为String类型
八、String类型转换为基本类型
在将String类型转换成基本类型时,要保证字符串能转换成有效的数据,否则会在运行时抛出异常,因为在运行时才能发现字符串是非法的。
可以看到不论是无法转换的字符串还是字符串中的数字超出范围,都会抛出异常。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/2333.html