学习笔记,仅供参考


文章目录

  • 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)--基础语法之数据类型转换相关推荐

  1. 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...

  2. 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符

    学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...

  3. 第三次学JAVA再学不好就吃翔(part14)--基础语法之循环语句注意事项

    学习笔记,仅供参考 文章目录 JAVA基础语法 for, while, do...while的区别 死循环 循环嵌套 JAVA基础语法 for, while, do-while的区别 do-while ...

  4. 第三次学JAVA再学不好就吃翔(part19)--二维数组

    学习笔记,仅供参考 文章目录 JAVA基础语法 二维数组 二维数组的格式 二维数组的遍历 二维数组的求和 基本数据类型和引用数据类型的参数传递问题 JAVA基础语法 二维数组 二维数组的格式 格式1 ...

  5. 第三次学JAVA再学不好就吃翔(part18)--数组操作

    学习笔记,仅供参考 文章目录 JAVA基础语法 数组操作 索引越界 空指针异常 遍历 获取数组中最大值 反转 根据元素找索引 JAVA基础语法 数组操作 索引越界 我们先看下面这段代码: class ...

  6. 第三次学JAVA再学不好就吃翔(part17)--数组

    学习笔记,仅供参考 文章目录 JAVA基础语法 数组概述 数组的初始化 内存分配 绘制内存图 JAVA基础语法 数组概述 数组概念 数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器.数组既 ...

  7. 第三次学JAVA再学不好就吃翔(part16)--方法及方法重载

    学习笔记,仅供参考 文章目录 JAVA基础语法 方法概述 方法重载 JAVA基础语法 方法概述 为什么要有方法 为了提高代码的复用性 什么是方法 完成特定功能的代码块. 方法的格式 修饰符 返回值类型 ...

  8. 第三次学JAVA再学不好就吃翔(part15)--基础语法之控制跳转语句

    学习笔记,仅供参考 文章目录 JAVA基础语法 break语句 continue语句 标号 return语句 JAVA基础语法 break语句 应用场景 只能在switch和循环中使用 举个例子 cl ...

  9. 第三次学JAVA再学不好就吃翔(part13)--基础语法之while循环语句

    学习笔记,仅供参考 文章目录 JAVA基础语法 while语句 do...while语句 JAVA基础语法 while语句 格式 初始化语句; while(判断条件语句) {循环体语句;控制条件语句; ...

最新文章

  1. Spark Streaming--实战篇
  2. 秒拨动态ip切换技术python_Python爬虫如何通过更换IP避开网站的反爬虫机制(一)...
  3. linux如何卸载自带的openJdk,并且安装jdk1.8
  4. ffplay android 编译,ffmpeg android 平台编译
  5. 现在就是.Net最好的时代!我赞成,谁反对?
  6. 从0开始编写dapper核心功能、压榨性能、自己动手丰衣足食
  7. 如何启动多个WebLogic托管服务器
  8. java多线程思维导图
  9. Linux 查看ERROR日志方法
  10. 从 Flash 到 WEBGPU,Web 图形技经历过的变革你了解吗?
  11. 智能音箱,你在窃听我吗?
  12. 微信棋牌游戏开发 h5游戏平台制作教程linux系统
  13. php面试题 几升水,三个水桶等分8升水的问题 -《算法的乐趣》
  14. 用计算机刻录光盘,笔记本电脑刻录光盘 手把手教你刻录光盘
  15. 官宣!成都链安在北京成立分部啦!
  16. (a++) + (++a)
  17. 一个全国500强企业的老板是如何关爱员工的
  18. 用excel做一个家庭流水账本 增加一些统计功能 和大家分享
  19. 爬虫(豆瓣电影Top250数据分析)学习笔记
  20. 基于ZigBee的桥梁健康监测系统

热门文章

  1. 驱动人生服务器版本_电脑驱动怎么装?电脑刚装系统怎么装驱动?
  2. http协议实现web服务器,http协议实现web服务器
  3. 学校计算机教学演示,案例演示在计算机基础教学中的运用
  4. linux系统中扩展一个逻辑卷,Linux 创建及扩展逻辑卷
  5. 干货:Java并发编程必懂知识点解析
  6. C# 结构体 枚举类型
  7. Java面向对象练习题之字母输出
  8. mysql源代码安装
  9. 【算法学习笔记】19.算法设计初步 最大子列和问题的几种方法
  10. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]