数据类型转换(java)
- 默认转换(从小到大 /*联想式理解:从弱变强 因为代码的世界是正能量的,所以可以默许蜕变得原来越好哇*/)
byte(1),short(2),char -> int(4) -> long(8) ->float(4) -> double(8)
问题来了,4个字节的float存8个字节的long???
这里就有个小知识点啦:
- 浮点型采用科学计数法,整型采用补码形式,两者的存储结构不同,所以直接比较是不对的哦。方法展开见下详述(选读即可):
float类型数字在计算机中的存储遵循IEEE—754格式标准:一个浮点数由底数m和指数e两部分组成。
①底数部分:使用二进制数来表示浮点数的实际值
而指数可正可负,Therefore,IEEE规定,此处算出的次方必须减去127才算真正的指数。
②指数部分:占用八个字节的二进制数,可表示0~255的数值范围
底数部分实际是占用24字节的一个值,但是最高位始终为1,因而最高位省去不存储,在存储中占23字节
格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
PS:其中S表示浮点数正负
E指数 加上 127后的 值 的 二进制数据
M底数
eg:10.625在内存中的存储
首先要把10.625换算成二进制:1010.101
①整数部分:二进制
②指数部分:乘以2,直到乘位0,进位按顺序取
- 从第一点的知识基础上,我们可以明确float表示的数据范围比long的范围要大
- ①boolean类型不能转换为其他的数据类型
②byte,short,char相互之间不转换,如果他们参与运算呀,就先转换为int
- 字符串类型与其他类型进行字符串连接+时,结果是字符串类型
进行运算时,讲究个“先入为主”
eg:
System.out.println("aha"+'a'+1);
System.out.println(1+'a'+"aha");
System.out.println(5+5+"=5+5");
System.out.println("5+5="+5+5);
- 数据溢出的情况下 进行强制类型转换
知识补充:原码补码反码之间的三角关系
原码:对应数字的二进制
反码:原码中的1变0,0变1,搞定
补码:反码末尾加一
eg:(byte)129 ==?
①计算机中通过数据补码形式进行运算
②明确:byte只占一个字节,8位
而int占四个字节,32位
③整形129的补码(当然啦,作为正数,原码补码反码都是一样的): 00000000 00000000 00000000 10000001
做截取操作,截成byte类型,保留八位:10000001
那么再通过已知补码还原出原码就是下一步的工作咯
反码(把那个1再减回来):10000000
原码(1变0,0变1):01111111
其中,0位符号位(符号位上0代表负号,1代表正号)
1+2+4+8+16+32+64=127
锵锵锵,所以(byte)129为-127
因为byte的范围是-128~127,,所以大家完全可以找个范围外的数练练手,小陌当了多年的理论党越来越菜,往往熟习理论只是真正学会的十分之三,会用才是王道,别堕落为小陌这般菜鸟呀!!!
!!!不要随意的去使用强制转换,毕竟它隐含了精度损失的弊端
数据类型转换(java)的更多相关文章
- JavaSE学习(二):进制转换—数据类型转换—Java运算符
一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16) = 14*16(0) +7*16(1) + 10*16(2) + ...
- java_数据类型转换、运算符
数据类型转换 Java程序中要求参与计算的数据,必须要保证数据类型一致,如果数据类型不一致将发生类型的转换. 1.1 自动转换 一个 int 类型变量和一个 byte 类型变量进行加法运算,运算结果, ...
- java基础之数据类型转换
在写java程序时,经常会遇到需要数据类型转换,下面我们来介绍一些一些基本数据类型之间的转换. 1.int,folat,double,boolean,long 转换成字符串,其实很简单只需使用一个函数 ...
- Java基础知识强化22:Java中数据类型转换
数据类型转换: (1). 自动转换 低级变量可以直接转换为高级变量,这叫自动类型转换.比如: byte b: int b: long b: float b: double b: 上面的语句可 ...
- Java数据类型转换浅析
Java数据类型转换分为两种:自动类型转换和强制类型转换. 数据类型转换的关键是数据类型相应的表数范围大小 1.自动类型转换: 概念:小范围数据类型会自动转化成大范围数据类型 实例: int a=10 ...
- Java基础语法(一)<注释,关键字,常量,变量,数据类型,标识符,数据类型转换>
从今天开始,记录学习Java的过程.要学习Java首先得有环境,至于环境的安装我就不说了,百度有很多教程,比如:http://jingyan.baidu.com/article/20095761904 ...
- Java基础练习1(数据类型转换)
1.下列代码的输出结果是:()(单选) public static void main(String[] args){ double money = 3.0; money -= 2.9; System ...
- Java知多少(11)数据类型转换
数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转换顺序不受限制. 自 ...
- Java中数据类型转换大全(个人总结)
一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.value ...
- Java将其他数据类型转换成JSON字符串格式
Student.java package com.demo.servlet; import java.util.List; import java.util.Map; public class Stu ...
随机推荐
- Windows 提权-SeImpersonatePrivilege 特权
本文通过 Google 翻译 SeImpersonatePrivilege – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校 ...
- 数据挖掘 | 数据隐私(2) | 差分隐私 | 数据重构化攻击(Reconstruction Attacks)
L2-Reconstruction Attacks 本节课的目的在于正式地讨论隐私,但是我们不讨论算法本身有多隐私,取而代之去讨论一个算法隐私性有多么的不可靠.并且聚焦于 Dinur 与 Nissim ...
- Visio绘制时间轴安排图的方法
本文介绍基于Visio软件绘制时间轴.日程安排图.时间进度图等的方法. 在很多学习.工作场合中,我们往往需要绘制如下所示的一些带有具体时间进度的日程安排.工作流程.项目进展等可视化图表. ...
- VS Code Runner 插件配置
VS Code Runner 插件配置 Code Runner插件是一个小而美的插件,可以很方便的运行一些简单的代码文件. 本篇博文记录一些相关的环境配置. 设置C++编译标准 这里可以设置默认的C+ ...
- Web前端入门第 27 问:你知道 CSS 被浏览器分为了几大类吗?
埋头苦写多年的 CSS,从没注意到 CSS 被浏览器分了类,直到偶然的一次翻阅开发者工具,才发现原来 CSS 属性也被浏览器归类收纳了. Chrome 下面是 Chrome 的开发者工具中 CSS 的 ...
- socket tcp断线重连
一.网上常用方法1.当Socket.Conneted == false时,调用如下函数进行判断 点击(此处)折叠或打开 /// <summary> /// 当socket.connecte ...
- ArrayBlockingQueue的take()底层原理
一.ArrayBlockingQueue 的 take() 方法的底层源码的详细介绍 ArrayBlockingQueue 是 Java 并发包 (java.util.concurrent) 中的一个 ...
- 🎀隧道代理ip使用
简介 隧道代理(Tunnel Proxy)是一种特殊的代理服务,它的工作方式是在客户端与远程服务器之间建立一条"隧道".这种技术常被用来绕过网络限制或提高网络安全性. 主要功能 I ...
- 基于Redission实现分布式调度任务选主
在Spring Cloud微服务架构中,基于Redisson实现分布式调度任务的选主和心跳监听,可以通过以下完整方案实现.该方案结合了Redisson的分布式锁和发布/订阅功能,确保高可靠性和实时性: ...
- MySQL 中 `LIMIT 100000000, 10` 和 `LIMIT 10` 的执行速度是否相同?
在MySQL中,LIMIT 100000000, 10和LIMIT 10的执行速度通常不会相同.它们的差异在于如何处理数据的检索. LIMIT 10: LIMIT 10表示从查询结果中获取前10条记录 ...