发表时间:2022-03-25来源:网络
数组、类型、接口 -->默认值:null
对于java中的小数类型的常量,其对应的类型都是double类型,就类似整数类型的常量对应的是int类型。
在任何编程语言中,字符都可以和int相互转换,字符转化成int将得到对应的系统编码。
例子:
int num5 = 'A';System.out.println(num5);//65字符编码参考:
大写字母'A'(65)~'Z'(90)
小写字母'a'(97)~'z'(122)
数字范围 '0'(48)~'9'(57)
可以发现大小写字母之间的编码差32,由此可以实现英文字母大小写的转换。
且java可以使用char进行中文保存,是因为java使用unicode这种16进制的编码。
数据溢出问题
数据类型可以进行转换的,范围小的数据类型可以自动转换为大的数据类型,但是数据大的要转为小的则需要进行强制转换,同时还需要注意因此带来的数据溢出问题。示例如下。
猜猜结果是什么?
int num = Integer.MAX_VALUE;System.out.println(num + 1);结果是-2147483648,为什么呢?
因为num是int类型,int类型得最大值是2147483647,那么当+1之后,由于int+int的值还是int类型,而结果显然大于了这个数字,因此造成了数据溢出,导致结果计算错误。
那么怎么解决呢?
int num1 = Integer.MAX_VALUE;System.out.println(num + 1L);看出来区别了吗?由于java的自动类型转换,num+1L会转换为long类型,所以数据溢出的问题就解决了。
隐式转换也叫作自动类型转换, 由系统自动完成.从存储范围小的类型到存储范围大的类型
byte ->short(char)->int->long->float->double
显示类型转换也叫作强制类型转换, 是从存储范围大的类型到存储范围小的类型.
显示类型转换需要进行声明,但是当心会出现精度丢失的问题如:
long longNum = Integer.MAX_VALUE + 1;
int num2 = (int)longNum;
System.out.println(num2);//-2147483648
结果显然是因为精度丢失导致的结果不对,此处需要注意。除非到不得已情况,不然不要轻易使用强制类型转换。
那么再思考一下如下代码结果是什么呢?
//此处20是int类型,但java对byte类型赋值有特殊处理//如果该值没有超过byte最大值,则会自动转换为byte类型进行赋值。//如果超过byte最大值,才会要求强制转换byte num4 = 20;System.out.println(num4 * num4 );答案是:400
那为什么此处400超过byte最大值127而未发生数据溢出?
再看下如下代码
byte num4 = 20;byte result = num4 * num4;System.out.println(result);结果是什么?
会编译错误!为什么?因为此时num4 * num4 的结果超过了byte类型最大值,所以是int类型,那么此处就需要强制转换才能够防止编译错误。
当然实际中不会这么写,此处只是为了说明byte的变量赋值机制。
谢谢关注和转发~
上一篇:Java的基本数据类型
下一篇:Java中基本类型及类型转换
计支宝app下载v3.1.29 安卓版
142.27MB |商务办公
小小优酷最新版下载v5.4.6 安卓官方版
68.11MB |影音播放
艺图语app下载v3.3.4 安卓免费版
34.33MB |系统工具
爱鸽者手机版下载v3.2.9 安卓版
243.57MB |商务办公
一品威客网接单app(一品众包)下载v2.7.1 安卓最新版
55.01MB |商务办公
诸葛找房网官方版下载v4.8.1.1 安卓最新版
66.6MB |生活服务
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游末日餐厅安卓版下载v1.35安卓版
其它手游葫芦侠十楼免费破解版下载v4.4.0.6安卓版
其它手游葫芦侠8楼最新破解版下载v4.4.0.6安卓版
其它手游