博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基本数据类型转换分析
阅读量:6567 次
发布时间:2019-06-24

本文共 1705 字,大约阅读时间需要 5 分钟。

  hot3.png

基本数据类型(原生类、内置类型)8种:

整型(默认int):byte(1个字节)、short(2个字节)、int(4个字节)、long(8个字节)

浮点类型(默认double):float(4个字节)、double(8个字节)

字符型:char

布尔型:boolean

另外有四种常用但不属于基本数据类型:数组、String、自定义类、接口。

数据类型转换有两种形式:1.隐式转换2.显式转换

隐式转换指从低级类型向高级类型的转换,系统将自动执行,我们不需要做任何操作的。那么什么算高级?什么算低级?占字节数大的属于高级,占字节数少的算低级。比如在整型中,int比short所占字节要多,那么我们在把short转为int时,系统可以自动转换。如:

int a;short b=4;a=b;System.out.print(a);

我们可以这样理解,把一个能装2个鸡蛋的篮子short里的鸡蛋倒入和另一个能装4个鸡蛋的int篮子,这样做是绝对可行的,所以系统是自动执行。

显式转换(强制类型转换)指高级类型向低级类型转换,格式:(类型名)要转换的值

如果把int篮子里的鸡蛋倒入short篮子这个时候就会出现编译错误,需要进行显式转换的书写,如下:

int a=4;		short b;		b=(short) a;		System.out.print(b);

在这时需要注意一点,short的数值范围是:-32768 - 32767,而int范围是-2147483648-2147483647,如果我们给int赋一个大于short最大值而小于int最大值时,比如40000,然后再进行显式赋值给short,这时运行系统比过不会报错,输出的short值并不是之前int的值,精度已经丢失,所以我们一定要注意!

long型(8字节)为什么能自动转成float型(4字节)

刚才在整型之间转换时举了一个鸡蛋和篮子的例子,但是我们发现,如果整型转浮点型时,那么哪个是高级,哪个是低级呢?难道还是要看字节数吗?答案是不是的。在这里,我们把浮点型作为高级,整型作为低级的,也就是说,即使是8个字节的long型转4个字节的float型,那么我们也不需要显式转换,那么这是为什么呢?

这是因为二者在内存中的存储形式不同。

long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。

float在内存中占4个字节,共32位,但是浮点数在内存中是这样的:V=(-1)^s * M * 2^E,浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。其中第1位,符号位,即S。接下来的8位,指数域,即E。剩下的23位,小数域,即M,M的取值范围为[1,2)或[0,1)。也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却比长整型的最大值要大。 这也就是为什么在数据转换的时候,long类型转换为float类型的根本原因所在。

字符型与整型之间的相互转换

我们没有能将char型一步转为整型的方法,需要先转为String型进行过渡,然后再从String转为整型。

char ch='2';		int a;		a=Integer.parseInt(Character.toString(ch));		System.out.println(a);

运行结果:2

整型转为char型:

int a=22;		char[] ch;		String b=String.valueOf(a);		ch=b.toCharArray();		for(char c:ch){			System.out.println(c);

运行结果:2

                    2

char转String小技巧

String str;char ch ='a';str=ch+"";

在char变量后直接加“”即可转换为String哦~。

转载于:https://my.oschina.net/higuy/blog/734219

你可能感兴趣的文章
移动端 html2canvas 踩坑记录
查看>>
[Vue CLI 3] 插件开发之 registerCommand 到底做了什么
查看>>
Grafana文档(升级Grafana)
查看>>
数据预处理代码分享——机器学习与数据挖掘
查看>>
python实现客户端和服务器端传输图片
查看>>
Web3.js 0.20.x API 中文版翻译
查看>>
前端每日实战:143# 视频演示如何用 CSS 的 Grid 布局创作一枚小松鼠邮票
查看>>
phpstorm 关闭多余变量提示
查看>>
DOM概述 选取文档元素
查看>>
构建你的第一个Vue.js组件
查看>>
如何完整迁移git仓库到另一个远程地址
查看>>
autocad三维汇报,bim汇报,视图汇报方法
查看>>
来来来,你可能没见过这么全的实战吧
查看>>
【队列源码研究】消息队列beanstalkd源码详解
查看>>
JS基础知识学习(一)
查看>>
多条语音消息合成一整条连续播放与进度条功能技术点!
查看>>
最详细的JavaWeb开发基础之java环境搭建(Windows版)
查看>>
通过btrace排查线上频繁Full GC的case
查看>>
JS基础入门篇(一)
查看>>
JavaScript-包装对象
查看>>