第二十一篇 Java 数据类型的定义 ,以及基础类型的自动转换和强制转换
大家好,今天呢我吧我所学到的一些知识点共享给大家,希望大家看完之后,要是有什么不懂的,请随时联系我,要是觉得我写的不是很好的 ,还希望你们能够谅解一下,因为小弟我刚学会写博客也没多久,很多格式和方法都不是很完善,希望大家多多包涵,好了 废话就不多说了,来谈一下今天我所学到的一些知识点吧;
今天我主要是学到了一些Java中的数据类型,其中,Java中的数据类型分为俩类------基础数据类和逻辑数据类,下面我所介绍的都是基本数据类的一些分类,至于逻辑类,由于使用次数过少,所以今天就不再这里多做介绍了。
好了,基本数据类里面又包含了8种数据类型,从小到大排列就是,byte / shot / int / long / float / double/ 和一些单字符型 char / boolear 总共八种;
至于这八种常用的数据类型的用法,我相信懂一点Java基础的都知道该怎么使用吧,这这里我就不一一向大家介绍了。
回归主题,基础类型的自动转换 和强制转换是什么??? 在一开始接触的时候 我也没弄懂是怎么一回事,但是按照字面上的意思 不就是 简单的 把不同类型 的数值 进行转换一下吗,我是一开始就这样想的,但是到后来我发现我错了,而且错的很离谱,因为这里包含着许多学问,也就是接下来我所说的 自动转换 和强制转换了;
现在来想一下第二个问题,为什么要进行强制转换,可能有很多程序员认为i+=1只是i=i+1的简写方式,其实不然,它们一个使用简单赋值运算,一个使用复合赋值运算,而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型。看看以下的两种写法,你就知道它们的差别在哪儿了:
(1) byte i=5;
i+=1;
(2) byte i=5;
i=i+1;
第一种写法编译没问题,而第二种写法却编译通不过。原因就在于,当使用复合赋值运算符进行操作时,即使右边算出的结果是int类型,系统也会将其值转化为左边的byte类型,而使用简单赋值运算时没有这样的优待,系统会认为将i+1的值赋给i是将int类型赋给byte,所以要求强制转换。理解了这一点后,我们再来看一个例子:
byte b=120;
b+=20;
System.out.println("b="+b);
说到这里你应该明白了,上例中输出b的值不是140,而是-116。因为120+20的值已经超出了一个byte表示的范围,而当我们使用复合赋值运算时系统会自动作类型的转化,将140强转成byte,所以得到是-116。由此可见,在使用复合赋值运算符时还得小心,因为这种类型转换是在不知不觉中进行的,所以得到的结果就有可能和你的预想不一样
好了,由于时间关系,今天的知识点到这里又要结束了,而每天的计划和目标又得重新提醒自己一遍了。
1、每天锻炼指法一小时;
2、每天坚持写一篇博客或者日志;
3、每天上课提前十五分钟进教室;
4、每天给自己一句鼓励的话语------学知识只是一块敲门砖,能够让你比别人领先一步进公司,但是当你进去之后就会发现,进来的每个人的知识量都是差不了多少的,所以说在以后的人生路上,还是得看你学会做人的态度。。。。。。。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。