常量以及数值问题

常量定义

Java 语言中,主要是利用关键字 final 来定义一个常量。常量一旦被初始化后不能 再更改其值。

常量声明格式为: final type varName = value; 例如 final PI = 3.14;

Java 语言整型常量的四种表示形式

  • 十进制整数,如:99, -500, 0 。写法:0 1 2 3 4 5 6 7 8 9 10 …

  • 八进制整数,要求以 0 开头,如:015 。写法:0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20….

  • 十六进制数,要求 0x 或 0X 开头,如:0x15 写法:0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f

  • 二进制数,要求 0b 或 0B 开头,如:0b01110011 写法:0 1 10 11 100 101 110 111 1000…..

Java 浮点类型常量有两种表示形式

  • 十进制数形式,例如:3.14 314.0 0.314
  • 科学记数法形式,如 3.14e0 3.14E2 3.14E-1

常量规约

【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT / CACHE_EXPIRED_TIME

字节

  • 计算机在任何情况下存储数据的时候,都是以二进制的补码的方式存储。
  • 一个二进制位,也就是一个1或一个0,这一个二进制位被称为1个比特位。(1bit)
  • 8个比特位是1个字节。(1byte = 8bit)
  • 1个字节是8个二进制位组成。(11111111,这是一个字节)
  • 数据类型所占用的字节数量:byte short int long float double boolean char , 12484812

二进制

计算机二进制包括三种形式:
- 原码、反码、补码
- 对于正数来说:
  - 原码、反码、补码完全一致。
  - 比如:1这个数字它的原码反码补码都是:00000001
- 对于负数来说:
  - 原码:比如-1,对应的原码是:10000001
  - 反码:原码的符号位不变,其它位都取反:11111110
  - 补码:反码+1就是补码。11111111

进制转换

进制转换
        (1)其他进制到十进制
                系数:就是每一个位上的数值
                基数:x进制的基数就是x
                权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
                结果:系数*基数^权次幂之和。
        (2)十进制到其他进制
                除基取余,直到商为0,余数反转。
        (3)进制转换的快速转换法
                A:十进制和二进制间的转换
                        8421码。
                B:二进制到八进制,十六进制的转换

关于二进制位的符号位
    对于数字类型来说:byte,short,int,long,float,double,他们都是有正负之分的,所以这些类型的数字对应的二进制位最左边的那个二进制位是符号位。
    最左边的二进制位是1表示该数字是负数,0表示该数字是正数。
    boolean和char没有正负之分。
    byte的最大值:01111111(127),01111111 = 10000000 - 1 = 2^7 - 1
    byte既然是1个字节,它就可以表示256(11111111)种不同的情况.

    byte类型取值范围:[-128 ~ 127]
    同理:可以根据byte推算出其他类型的取值范围。

long x = 100L;
int y = (int)x;//100
//100L对应的二进制是: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100
//8个字节的Long转换4个字节的int,结果为00000000 00000000 00000000 01100100 = 4 + 32 + 64 = 100

byte x = (byte)235; //21
// int类型的235对应的二进制:00000000 00000000 00000000 11101011
//将4个字节的235转换成byte类型1个字节:11101011
//11101011现在是一个补码
// 11101011它的第一个符号位是1,表示负数。
// 第一步:补码-1是反码:11101010
// 第二步:反码的符号位不变,其余位都取反:10010101

十进制数 29 转成二进制就是:11101

常量以及数值问题

常量以及数值问题

浮点型数据在内存当中是如何存储的?3.14在内存中是怎么存的?
计算机存储浮点型数据的时候遵循了一个存储规范:IEEE754标准。
IEEE754标准 (二进制浮点数算术标准)
float类型占用32个二进制位
IEEE754标准将32个二进制位划分成了3部分。
从左边的二进制位开始:
第1个二进制位是:符号位[S](1表示负数,0表示正数)
第2~9个二进制位是:指数位[E](8个二进制位)
第10~32个二进制位是:尾数位[M](23个二进制位)
3.14这是一个浮点型数据,就是要搞明白,这个3.14在内存中是怎样的一个二进制位。
由于float的特殊存储结构,导致了float虽然是4个字节,但是比8个字节的long类型容量还要大。(E最大值可以达到255,即float最大值可以达到2^128,,这显然比2^63大)

常量以及数值问题

常量以及数值问题

Original: https://www.cnblogs.com/sunlincode/p/16717741.html
Author: 小孙不是程序员
Title: 常量以及数值问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579614/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 内存分析器 (MAT)

    内存分析器 (MAT) 1.1 MAT介绍 MAT是Memory Analyzer tool的缩写。指分析工具。 1.2 MAT作用 Eclipse Memory Analyzer…

    Java 2023年6月8日
    068
  • java学习第二天

    Day02 第二天主要了解…

    Java 2023年6月8日
    059
  • 邻接表有向图(三)之 Java详解

    邻接表有向图是指通过邻接表表示的有向图。 上面的图G2包含了”A,B,C,D,E,F,G”共7个顶点,而且包含了” 上图右边的矩阵是G2在内存中…

    Java 2023年5月29日
    0103
  • 用了 Intellij idea 这些插件和高效配置后,写代码快得飞起来,再也不用 996 加班了

    背景 作为一个 Java 程序员,我相信,绝大多数同学日常都是用 idea 来写代码。 Idea 作为宇宙第一 Java IDE,提供了丰富、强大的功能,可以让你写 Java 代码…

    Java 2023年6月9日
    091
  • 数据结构与算法之选择排序

    上一篇说了冒泡排序,这次说选择排序.选择排序与冒泡排序十分相似.冒泡排序是每一轮中的每一次都讲最小值交换.而选择排序是将每一轮中最小的值记录下标记录下来,一轮过后只交换一次,从空间…

    Java 2023年6月8日
    071
  • Spring boot——Actuator 详解

    management.health.status.http-mapping.FATAL=503 如果你需要更多的控制,你可以定义自己的 HealthStatusHttpMapper…

    Java 2023年5月30日
    078
  • Windows 资源管理器 CPU100%

    Windows 资源管理器 CPU100% win + R打开运行框并输出:services.msc 点击确定打开服务;将服务中的Problem Reports Control P…

    Java 2023年6月14日
    099
  • MySQL索引

    MySQL索引 1、MySQL中InnoDB存储引擎索引概述 在InnoDB存储引擎中支持以下几种常见的索引 B+树索引 全文索引 哈希索引 InnoDB存储引擎支持的索引是自适应…

    Java 2023年6月8日
    068
  • selenium 常见面试题以及答案(Java版)

    1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出 NoSuchElementException 这样就可以使用…

    Java 2023年5月29日
    0125
  • JavaScript中Date对象的使用

    注意:JS 的 Date 对象中有一个坑,它的月份是从 0 开始计算的。即 现实中的 1 月份为 Date 对象中的 0 月份 1. Date 对象的创建方式 无参构造 new 出…

    Java 2023年6月5日
    071
  • 容器编排工具很多套,出身名门的Swarm上不了

    Swarm集群编排 什么是Swarm ​ Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集…

    Java 2023年6月15日
    076
  • java —— 异步任务失败后处理

    场景: 实际项目中,程序操作出了问题,后续要怎么处理是个很重要的问题,如果这个问题是同步操作引起的解决起来比较简单,比如用户注册,如果系统注册失败,后台可以马上返回错误信息,用户也…

    Java 2023年5月29日
    080
  • 5个必知的高级SQL函数

    5个必知的高级SQL函数 SQL是关系数据库管理的标准语言,用于与数据库通信。它广泛用于存储、检索和操作数据库中存储的数据。SQL不区分大小写。用户可以访问存储在关系数据库管理系统…

    Java 2023年6月15日
    0121
  • 自用代码css获取任意网址的/favicon.ico的方法教程

    尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用这种办法获取 如果有好的方法望评论告知 谢谢 html;gutter:true; alt="" w…

    Java 2023年6月5日
    083
  • Kafka基本理论

    基本特点 异步解耦、削峰填谷 Topic 分区/分区备份,集群互为某分区备份 broker控制,分区leader/follower 单分区保证消息时间顺序 offset,分区内消息…

    Java 2023年6月9日
    080
  • linux安装nacos2.x集群

    新建并编辑nacos.service文件,并复制/转移到/etc/systemd/system/nacos.service中,**代表你的安装目录,可根据实际情况进行更改添加内容如…

    Java 2023年6月16日
    057
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球