网站首页 > java教程 正文
?基本数据类型有四类八种,相互之间有着包含与被包含的关系。
比如9,它既可以是字节型,也可以是短整型,也可以是整型,长整型,甚至还可以是一个字符。
那他们之间是如何转化的呢?
一、自动转换
看下面例子:
2和2.0,在我们的认知中,可能就觉得它们其实就是一回事,但是在Java世界里,它们对应不同的数据类型。
2这个常数默认是int类型的,当它赋值给一个double类型的时候,输出时就会自动转换。
代码执行过程中取值范围小的类型自动转换为取值范围大的类型
其中大小范围如下:
byte、short、char < int < long < float < double
再看一个例子:
1,它既可以是byte、也可以是short、char、int、long,但是在运算时会自动转换成int。
所以:b1+b2=2(这个2是int类型)
无法将int类型的数值赋值给byte类型。
同理我们可以依次证明byte、short、char 运算时直接提升为int 。
二、强制转换
前面我们将一个int类型的数据赋值给一个double类型,它会完成自动转换。
那反过来会怎么样?
1.2默认是double数据类型,当把一个double数据类型的数据赋值给一个int类型时,编译会报错。
这个时候我们就需要强制转换了
由此我们可以理解强制转换的概念:
- 自动转换是取值范围小的类型自动转换为取值范围大的类型
- 强制转换是取值范围大的类型强制转换成取值范围小的类型
转换格式:
int i=(int)1.2; 数据类型 变量名 = (数据类型)被转数据值;
也就是一个括号加上需要强制转换的数据类型,强制转换后会发现,i从1.2变成1了。
综上我们可以发现:自动转换时是Java自动执行的不需要我们参与,而强制转换需要我们自己手动执行。
转换原理:
前面我们学习了字节,其取值范围为[-128,127]
定义一个byte类型的变量,赋值一个在它范围之外的一个数,比如257
结果为何为1?
257超过了byte类型的取值范围,默认为int类型,int类型4个字节,也就是32位。
强制转换为byte类型,会丢失前三个字节的数据。
故:强转有风险,操作需谨慎
- 精度损失:浮点转成整数,直接取消小数点,可能造成数据损失精度。
- 数据溢出:int 强制转成byte 砍掉3个字节,可能造成数据丢失。
三、ASCII编码表
在学习二进制中我们便知道了计算机底层都是二进制数据(0和1)
那如何让计算机识别人类的文字呢?
于是就产生出了编码表的概念。
编码表 就是将人类的字符和一个十进制数进行对应起来组成一张表格。
表中每个字符都对应了一个十进制数值,如下:
记住最常见的几个:
- 字符0对应数字48
- 字符9对应数字57
- 大写字母A对应65
- 大写字母Z对应90
- 小写字母a对应97
- 小写字母z对应122
PS:0~9是字符时,也有对应的十进制数字
每个字符都对应一个数值。如果要进行数值运算,字符可以 代表其对应的数值,比如char转int:
int i ='0';//此时'0'是一个字符而不是一个数字
System.out.println(i);//结果是48
System.out.println('0'+1)//结果是49
总结:
- 上一篇: Java基础知识(数据类型,类型转换,类型提升)
- 下一篇: java基本数据类型之间的转换
猜你喜欢
- 2024-11-21 Java整数和浮点数类型转换
- 2024-11-21 JavaSE基础之多态的应用场景
- 2024-11-21 第二章:Java数据类型和运算符
- 2024-11-21 int强转为byte类型么?会产生什么问题?
- 2024-11-21 Java接口&异常处理&类型转换
- 2024-11-21 详解 Java 17 中的模式匹配(Pattern Matching)
- 2024-11-21 Java基本数据类型之间的转换规则
- 2024-11-21 关于Java String 类型转换时null的问题
- 2024-11-21 [JAVA冷知识]什么是逆变与协变?数组是否支持协变&逆变?泛型呢?
- 2024-11-21 看完后让你成为武松,手把手教你打死Java中的纸老虎
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)