第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换
学习笔记,仅供参考
文章目录
- JAVA基础语法
- 数据类型转换之隐式转换
- 数据类型转换之强制转换
JAVA基础语法
数据类型转换之隐式转换
byte类型转换为int类型
class TypeConvertTest {public static void main(String[] args) {int x = 3;byte b = 5;x = x + b;System.out.println(x); // int类型 + byte类型 -> int类型}
}
这里byte类型的b与int类型的x相加时,b先将自己提升为int类型,再与x相加,得到int类型的结果,最后赋值给x。
这就是隐式转换,当小的数据类型(比如byte)与大的数据类型(比如int)相加时,小的数据类型会自动提升为大的数据类型。
数据类型转换之强制转换
如果我们这样写代码,会得到怎样的结果呢?
class TypeConvertTest {public static void main(String[] args) {int x = 3;byte b = 5;b = x + b;System.out.println(b);}
}
结果:
---------- javac ----------
TypeConvertTest.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失b = x + b;^
1 个错误Output completed (5 sec consumed) - Normal Termination
程序在编译时报错了!这是为啥呢?因为x + b得到的结果是一个int 类型,这时我们用byte类型的b去接收这个结果,可能会导致精度的损失。
但是我就是想转换,可咋整呢?
那我们就进行强制转换
class TypeConvertTest {public static void main(String[] args) {int x = 3;byte b = 5;b = (byte)(x + b);System.out.println(b); // int类型 + byte类型 = int类型}
}
结果:
8
- 强制类型转换注意事项
如果超出了被赋值的数据类型的取值范围,强转得到的结果可能会由于精度的损失,与我们期望的结果不同 。
class TypeConvertTest {public static void main(String[] args) {byte b = (byte)(126 + 4);System.out.println(b); // int类型 + byte类型 = int类型}
}
输出:
-126
图解:
126 + 4 = 130
00000000 00000000 00000000 10000010 //130的二进制
如果我们进行强制类型转换,将int转换为byte类型,则前3个8位将被砍掉
10000010 //byte类型
由于我们运算时是用补码进行运算的,所以上面这个是补码,我们需要将其转换为原码
10000010 --反码--> 10000001 --原码--> 11111110
可以看到这个byte类型的数据是-126
第三次学JAVA再学不好就吃翔(part5)--基础语法之数据类型转换相关推荐
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符
学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...
- 第三次学JAVA再学不好就吃翔(part14)--基础语法之循环语句注意事项
学习笔记,仅供参考 文章目录 JAVA基础语法 for, while, do...while的区别 死循环 循环嵌套 JAVA基础语法 for, while, do-while的区别 do-while ...
- 第三次学JAVA再学不好就吃翔(part19)--二维数组
学习笔记,仅供参考 文章目录 JAVA基础语法 二维数组 二维数组的格式 二维数组的遍历 二维数组的求和 基本数据类型和引用数据类型的参数传递问题 JAVA基础语法 二维数组 二维数组的格式 格式1 ...
- 第三次学JAVA再学不好就吃翔(part18)--数组操作
学习笔记,仅供参考 文章目录 JAVA基础语法 数组操作 索引越界 空指针异常 遍历 获取数组中最大值 反转 根据元素找索引 JAVA基础语法 数组操作 索引越界 我们先看下面这段代码: class ...
- 第三次学JAVA再学不好就吃翔(part17)--数组
学习笔记,仅供参考 文章目录 JAVA基础语法 数组概述 数组的初始化 内存分配 绘制内存图 JAVA基础语法 数组概述 数组概念 数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器.数组既 ...
- 第三次学JAVA再学不好就吃翔(part16)--方法及方法重载
学习笔记,仅供参考 文章目录 JAVA基础语法 方法概述 方法重载 JAVA基础语法 方法概述 为什么要有方法 为了提高代码的复用性 什么是方法 完成特定功能的代码块. 方法的格式 修饰符 返回值类型 ...
- 第三次学JAVA再学不好就吃翔(part15)--基础语法之控制跳转语句
学习笔记,仅供参考 文章目录 JAVA基础语法 break语句 continue语句 标号 return语句 JAVA基础语法 break语句 应用场景 只能在switch和循环中使用 举个例子 cl ...
- 第三次学JAVA再学不好就吃翔(part13)--基础语法之while循环语句
学习笔记,仅供参考 文章目录 JAVA基础语法 while语句 do...while语句 JAVA基础语法 while语句 格式 初始化语句; while(判断条件语句) {循环体语句;控制条件语句; ...
最新文章
- Spark Streaming--实战篇
- 秒拨动态ip切换技术python_Python爬虫如何通过更换IP避开网站的反爬虫机制(一)...
- linux如何卸载自带的openJdk,并且安装jdk1.8
- ffplay android 编译,ffmpeg android 平台编译
- 现在就是.Net最好的时代!我赞成,谁反对?
- 从0开始编写dapper核心功能、压榨性能、自己动手丰衣足食
- 如何启动多个WebLogic托管服务器
- java多线程思维导图
- Linux 查看ERROR日志方法
- 从 Flash 到 WEBGPU,Web 图形技经历过的变革你了解吗?
- 智能音箱,你在窃听我吗?
- 微信棋牌游戏开发 h5游戏平台制作教程linux系统
- php面试题 几升水,三个水桶等分8升水的问题 -《算法的乐趣》
- 用计算机刻录光盘,笔记本电脑刻录光盘 手把手教你刻录光盘
- 官宣!成都链安在北京成立分部啦!
- (a++) + (++a)
- 一个全国500强企业的老板是如何关爱员工的
- 用excel做一个家庭流水账本 增加一些统计功能 和大家分享
- 爬虫(豆瓣电影Top250数据分析)学习笔记
- 基于ZigBee的桥梁健康监测系统