数据类型转换(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 ...
随机推荐
- 傻妞教程——对接QQ频道机器人
安装插件 前往傻妞插件市场安装QQ频道机器人插件,基于Node开发. 申请机器人 使用前请先确保已在机器人平台创建机器人 (opens new window),具体创建教程在超链接里面有,根据教程图以 ...
- Docker - 在docker中部署Nginx
1.docker search 查找ngix 2.docker pull下载镜像 3.查看镜像列表 4.docker run启动容器 5.测试nginx容器是否启动成功 1.docker search ...
- 大数据之路Week10_day07 (JavaAPI 操作Redis 与Hbase建立索引,通过查询redis中的索引查询Hbase数据)
在这里是简单模拟将索引存到redis中,再通过先查询索引再将Hbase中的数据查询出来. 需要考虑的问题: 1.建立redis的连接,建立Hbase的连接 2.如何创建索引,即创建索引的key和val ...
- springboot2.1.6整合activiti6.0(一)
一.pom <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3. ...
- FormCreate中在事件中获取api
form-create中在事件中获取api FormCreate 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成组件.支持5个UI框架,并且支持生成任何 Vue 组件. ...
- PHP中类和对象相关的函数
1.class_exists 用于判断一个类是否存在,参数为类名: 2.interface_exists 判断一个接口是否存在,参数为接口名: 3.method_exists 判断一个方法是否存在,参 ...
- Avalanche公链深度解析:创新共识、亚秒级最终性与生态竞争力
摘要:Avalanche定位为一个高性能.可扩展的Layer 1区块链平台,但它并不是一个新公链,其主网于2020年9月21日正式上线,有Ava Labs开发.Ava Labs成立于2018年,总部位 ...
- JMeter 线程编号 __threadNum 获取不到
场景: 在 BeanShell PreProcessor 中,使用 vars.get("__threadNum") 获取不到当前线程数,如: import org.apache.j ...
- vue学习一(指令1.v-text,v-html,插值表达式{{msg}})
一.1.v-text,v-html,插值表达式{{msg}} 注:v-text解决差值表达式闪烁问题,因为他是属性不是差值表达式 1.1.v-text: 是没有闪烁问题的,会覆盖标签的元素中原本的内容 ...
- Pydantic配置继承抽象基类模式
title: Pydantic配置继承抽象基类模式 date: 2025/3/21 updated: 2025/3/21 author: cmdragon excerpt: Pydantic模型配置系 ...