初识java-基本数据类型

大家好,我们今天来聊聊java的基本数据类型

直接进入主题  java有八种数据类型分别是:整数类型(byte  short  int  long  )、浮点类型(float  double  )、字符数据类型(char  )、布尔数据类型(boolean)

相信大家应该已经在c语言中学习了其中大部分了吧。那么我们从java的方面看看他们有什么不同

1.整形类型

int :它同c语言一样在java中也占据了4个字节,也就是32个比特位,那么他能存储的数据也就是-2^31---2^31-1,为什么呢,因为它的最高位是符号位,那么剩下的31位就可以用来存储数据了,有些人可能会问,那不是2^31次方吗,怎么还要-1呢?因为还有全0啊,那为什么负数不用-1呢?我们知道,正负数存储是通过补码储存,正数的原反补都是一样的,而假设负数补码码是10000000 00000000 00000000 00000000,那么反码就是-1,那么就变成了01111111 11111111 11111111 11111111,原码就是符号位不变,其他位按位取反(这里由于是负数,符号位还是看1),原码就是:10000000 00000000 00000000 00000000,我们认为这不是-0吗?是的,但要保证唯一性,已经由前面的整数中符号位是0表示了,所以计算机把他表示为最小负数也就是-2^31,你知道了吗?

byte:他是c语言中没有的数据类型,占据了1个字节,所以同int中的分析我们就可以知道,byte中最多只能存储-2^8---2^8-1的数字,他一般用于算法中的特殊情况,当然,还能节省很多空间。

short:在c语言中,他占据四个字节,可是在java中,它只占据2个字节,同理范围是-2^16---2^16-1

它相比于int更省空间,有时也会用在数据结构中进行特殊算法。

long:占据8个字节,同理范围是-2^64---2^64-1,能存储更大的数据,在有些牛客网或者leetcode中可以试试呢?它在定义时可以在数字后面加上L。

2.浮点数据类型

float:占有4个字节,它的写法在java中有点不同,它在定义时要加上f,(看图),否则就会报错,说到这,我们就要了解一下java了,它是一个比较安全的编程,就比如刚刚那个语法,在c语言中可以编译过去,但在java中不能编译,为什么呢?因为1.0默认为double类型,double占有64比特位,而float只占有32个比特位,那64位的能放到32位下面吗?答案是不能,那么有人会问了,这不是放得下吗?这就是为什么说java是安全的,语法限制你不能放就是不能放,相同的,long也不能放在int 或 short中。

3.字符类型

char:它不同于c语言,它占用两个字节,仅此而已,其他一般就和c语言差不多了。

4.布尔类型

boolean:在c语言中,我们也见过bool只是写法不同,boolean存储的是ture和false,是用来判断的。ture就是真,false就是假。它不能赋值给某个。

那么讲讲类型转换吧,前面提到double不能赋值给float,long不能赋值给int,我们可以强制类型转换

如图,我们定义了一个int类型的a,并且赋初始值10,后面想把a给到short类型的b,第二行中划红线了,表示编译错误,因为是我们前面讲到的,而第三行却又可以赋值给类型short 定义的c,因为我们强制类型转化了。将a强制转换成short给c,那么是永久转换成了short了吗?答案是不是得。

可以看到我们定义了short的d依旧报错,所以只是暂时转换成了short并且赋值给了c。

当然强制类型转换也是有不好的,比如float转换成int之类的整形,会有数据丢失,只留下了整数的那部分。并且可能会出现溢出,就出现了我们预想之外的结果。

我们看下这段代码的结果会是什么呢?

接下来揭晓正确答案。

为什么是-128呢?我们先来记下一个图

byte类型前面讲到是-128-127之间可以储存,超出了就看这张图,当我们赋值给到了128,比127大1,也就是127+1就跳到了-128,。

所以强制类型转换时有风险的,要对数据类型和存储有一定了解才能熟练使用。

那么今天的讲解就到这里,快快消化一下,并且叫上你的小伙伴来学习吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值