Java千问:Java语言各种数字的“非常规”写法你都会吗?

Java程序中总是会出现一些数字。我们通常都是用常规的方式来表示这些数字,如以下代码所示

int a = 1;
double b = 1.5;

但是数字也可以有非常规写法,在这里我们用一篇短文简单总结一下

整数的非十进制写法
首先强调一下,这里所说的整数并不是单指int类型,而是包含了int、byte、short和long这4种整数类型。在Java语言中,除了可以用十进制的形式表示整数以外,还可以用二进制、八进制和十六进制的方式表示整数。如果用十六进制的形式表示一个整数,数字要以0X开头,如果用八进制表示,则用0开头,而用二进制表示,用0B开头,如以下代码所示

byte n1 = 0B1011;//二进制表示法,换算等于十进制的11
int n2 = 072;//八进制表示法,换算等于十进制的58
long n3 = 0XFF5C;//十六进制表示法,换算等于十进制的65372

以上代码中就是数字的非十进制表示法以及对应的换算结果。需要注意的是,我们在一开始就强调了这几种表示法都是针对整数而言的,所以说,这几种表示数字的写法中,不能出现小数点,否则会出现语法错误!

浮点数的科学计数法
Java语言为了能够让浮点数表示出更大范围的数字,除了允许我们使用常规写法以外,还可以让我们用科学计数法的形式表示浮点数。我们来看一个例子

float n4 = 2.3E3F;//换算等于2.31000

使用科学计数法表示浮点数,需要用一个字母E来把系数和指数隔开。具体来说就是:字母E的前面是一个浮点数,后面是一个整数。E之前的浮点数是系数,而E之后的整数就表示10的多少次方,这个整数可以是负数。上面代码中,数字2.3E3F其实就是2.3乘以10的3次方。在数字的最后又出现了一个字母F,是因为浮点数常量默认都是double类型,把double类型的数据赋值给float类型的变量,要在末尾加字母F进行数据类型转换。
另外,必须强调一点就是:科学计数法只能用来表示浮点数,如果我们把一个用科学计数法表示的数字赋值给整型变量就会出现语法错误。即便字母E前面的系数不带小数点也不行!

数字中带有下划线

int n5 = 1000000000;

如果你看到上面的数字,我想你肯定会数一下这个数字中有多少个0。我们知道,在财会行业,为了降低读错数字的概率,人们经常会在数字中加入逗号,比如会把100000写成100,100。从JDK1.7开始,Java语言也借鉴了这种写法,但做了一点点改变,把数字之间的分隔符用逗号改成了下划线,比如说,我们可以把刚才代码中那个很长的数字写成
int n5 = 1_000_000_000;
对于这种加下划线的写法,需要强调几个注意事项
1、这种写法是从JDK1.7才开始引入的,早期版本的JDK并不支持这种写法
2、下划线出现的位置随意,并非一定要每3位数字才能出现一个下划线
3、无论浮点数还是整数,数字当中都可以出现下划线
以上我们用一篇短文总结了Java语言中各种数字的非常规写法,觉得不错就点个赞吧!

如想系统学习Java编程,可以点击这里观看我在本站的视频课程,有问题也可以加入我的QQ群291839907一起讨论!

原文地址:https://blog.51cto.com/2266836/2460280

时间: 2024-08-03 17:24:03

Java千问:Java语言各种数字的“非常规”写法你都会吗?的相关文章

Java千问:Java语言中最大的整数再加1等于多少?

已知Java语言中int类型所能表示的最大整数为2147483647,请问以下代码执行结果是什么?一部分人都会认为这段程序压根就无法通过编译,也有人认为,这段程序能够通过编译,但在运行时会抛出异常,但更多的人面对这道题目根本就无从下手.那么正确答案是什么呢?首先告诉大家,这段程序能够顺利通过编译,并且在运行时也不会出现异常,运行的结果是在控制台上输出了数字-2147483648!而-2147483648正好是Java语言中int类型所能表示的最小整数.这个运行结果可能会让很多人感到大跌眼镜,运行

Java千问:关于Java语言复合赋值运算符的两个问题,快来瞧瞧!

我们知道,在Java以及很多高级编程语言当中,都有一种运算符叫做复合赋值运算符.复合赋值运算符由两个符号组成,它所能完成的运算操作也分为两步:第一步是运算,第二步是赋值.比如说:上面的这两条语句相当于但是,如果碰到下面这样的情况,a的值该应该是多少呢?有人认为应该按以下方式来计算,因为我们都知道,在四则运算规则中,遵循"先乘除,后加减"的原则按照这样的方式来计算,得到a的值应该是7,但实际运行程序所得到的结果是8.这是为什么呢?就是因为复合赋值运算符在完成运算的时候,遵循一个规则:把&

Java千问:Java位运算经典应用(一)

很多人认为位运算在实际开发过程中并没什么用,学习位运算也只是为了应付面试.这种想法是错误的,接下来我们就通过几篇连载文章介绍一下位运算在实际开发过程中的几个经典应用实例.如果对位运算规则掌握还不是很熟练,可以先阅读<Java千问:Java语言位运算符详解>.这篇文章不仅详细讲解了Java位运算的基本规则和一些常用的运算定律,同时还在文中提到了一些常用的位运算实际应用,比如可以用位运算操作的方式快速把某个变量所在的内存单元清零,或者位运算的方式实现某个变量快速倍增等等.但文中所这提到的这几个实际

Java千问:Java位运算经典应用(二)

接上篇 三.不借助中间变量交换两个变量的值 通常情况下,我们要交换两个变量的值都按如下步骤操作: 这种操作方式不难理解,实现交换变量值的关键点就在于中间变量c.而现在的题目要求是不借助中间变量来交换a和b的值.如果不使用位运算的方式,同样可以做到不借助中间变量交换两个变量的值,其实现过程如下. 为了讲解方便,我们把最初a与b的值称之为原始a和原始b,3行代码就是3步操作:第1步:把原始a与原始b相加的和存储到变量a中,变量b的值暂时没有发生变化.第2步:用这个和减去原始b,再赋值到变量b中,经过

《Java千问》系列短文写作计划

大家好,我在51CTO开博客啦!我本人从事软件开发和教学多年,在我从事教学过程中,回答过很多学生的问题,但非常遗憾,我只是当场回答了这些问题,但事后并没有把这些问题的解答写成博客.我打算弥补一下这个缺憾,因此产生了写文章解答问题的想法.经过几天酝酿,我打算把这些文章写成系列短文,名字就叫<Java千问系列>.取这个名字并不是说真的有一千个问题,"千"只是表示多的意思.只要我有把握回答的,都发表出来.关于<Java千问系列>的文章,在这里我想做几点说明:一.<

Java千问:开发Java程序为什么要配置环境变量?

我们在学习搭建Java开发环境的时候,老师总是让我们先安装JDK,紧接着又让我们去配置环境变量,之后才能动手编写Java程序.很多同学按照老师的步骤去做,成功的搭建好了Java开发环境,并且运行出了自己的第一个Java程序,感到非常有成就感. 那么,为什么在安装了JDK之后要配置环境变量呢?很多同学对这个问题其实并不清楚,只是知道如果不配置环境变量,就没法进行Java开发.今天,咱们就来聊聊为什么要配置环境变量.其实,配置环境变量的目的很简单:为了在命令行窗口下编译和运行Java程序.大家请注意

Java千问:你知道Java语言布尔型数据到底占多大空间吗?

我们都知道,Java语言中有个boolean类型.每个boolean类型的变量中存储的是一个true或者是false的逻辑值.那么存储这个逻辑值,需要多大的空间呢?从理论上来讲,存储这个逻辑值只需要1个位(bit)就可以了,很多教科书上谈到这个问题的时候,也说boolean类型的数据在内存中只占1个位. 但是稍微有点计算机常识的人都知道:计算机完成寻址操作的时候,是以字节为最小单位进行的.也就是说每次要读取内存中数据的时候,最小只能精确到1个字节,不能单独读取某个位上的信息.如果boolean类

Java千问:Java语言位运算符详解

很多编程语言都有位运算符,Java语言也不例外.在Java语言中,提供了7种位运算符,分别是按位与(&).按位或(|).按位异或(^).取反(~).左移(<<).带符号右移(>>)和无符号右移(>>>).这些运算符当中,仅有~是单目运算符,其他运算符均为双目运算符.在讲解这些运算符的使用之前,必须了解一个常识,那就是:位运算符是对long.int.short.byte和char这5种类型的数据进行运算的,我们不能对double.float和boolean进

Java千问:七个问题帮助初学者深入理解Java数组

几乎所有的高级语言当中,都提供了一种叫做"数组"的东西,Java语言当然也不例外.我们通过数组可以很方便的存储和管理一组数据.因为在Java语言当中使用数组非常的方便,所以导致很多初学者忽略了对数组的深入学习,本文就通过七个问题,来帮助初学者深入理解一下Java语言的数组到底是怎么回事. 一.数组是变量的简单叠加吗? 我们在学习Java的时候,知道一个int类型的变量可以存储一个整数,而一个int类想的数组可以存储多个整数.于是很多人认为数组只不过是变量的简单叠加而已,无非是变量存1个