数据类型和类型提升

目录

一、数据类型

int和long

字符型变量

布尔类型 

字面量

二、类型转换和类型提升

类型提升

关于int,byte,char之间的转换

int和byte的转换

char和int的转换

String类型与int之间的转换问题

int转String

String转int


一、数据类型

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的保存范围之内,否则都会报错

运行结果

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值