目录
一、数据类型
int和long
运行结果
如果将a的类型定义为long,就不会出现以上问题了
当进行网络编程,或者IO编程时,基本操作单位都是byte
字节是计算机存储的基本单位
字符型变量
char
运行结果
c语言的字符采用ASCII编码来存储字符,对中文或其它语言不友好
Java语言字符采用Unicode编码,16位编码(2字节)
布尔类型
布尔型变量只有两个变量,不是false就是true
表示真是true,假是false
不能和其它的数据类型转换
字面量
直接写出来的数值就称之为字面量,字面量属于常量(不可改变)
字面量也存在数据类型
10——》整型字面量,默认为int类型
10.1——》浮点型字面量,默认为double类型
‘a’——》字符字面量,默认为char类型
false——》布尔值字面量,默认为boolean类型
“abc”——》字符串字面量,默认为String类型
二、类型转换和类型提升
类型提升
小类型转换为大类型自动转换
大类型转换为小类型需要强制类型转换,有精度丢失问题
首先需要知道,计算机存储数据默认采用4字节存储,所有小于4字节的数据类型(byte,short,char),都会隐式提升为int之后进行存储(boolean除外)
小于4字节的类型处理问题
byte、short、char这三个数据类型在存储时仍然保留其类型,当这三个类型参与运算时,CPU都是以4字节为基础进行读写内存的,因此这三个类型在参与运算时会统一提升为int类型,然后参与运算。
关于int,byte,char之间的转换
int和byte的转换
当把整型字面量赋值给byte变量时,若在byte保存范围之内,则直接赋值byte a = 10;
若超出了byte的保存范围,必须进行强转,由精度丢失问题byte b = (byte)130;
运行结果
错误原因是CPU读写内存都是以4字节进行存储,a和b存储在内存中会自动提升为int类型
a+b已经成为了int类型,int = int + int
byte = int变量,对于变量来说,无法确定a和b的值,需要强转
char和int的转换
String类型与int之间的转换问题
int转String
方法一
在Java中任何其他类型和字符串对象“+”,都会将其它类型转换为字符串类型,然后进行字符串的拼接操作。
在第二个输出语句中,先进行(a+b)中的+,也就是整型之间的加法操作,然后执行(a+b)前面的+,也就是字符串的拼接操作,因为()有优先级。
运行结果
方法二
调用String提供的valueOf()方法
运行结果
String转int
调用整型包装类Integer的parseInt()方法
注意:字符后必须由纯数字组成,且必须在int的保存范围之内,否则都会报错
运行结果