在Java中使用下划线分隔数的字面值的用法讲解

在Java SE 7中新增了以二进制形式的字面值表示方式,你可以像使用十进制一样,方便地使用二进制形式的字面值来表示数值。

例如:

// 一个8位的byte值:
byte aByte = 0b100001;
// 一个16位的short值:
short aShort = 0b1010010100101;
// 一个32位的int值:
int anInt1 = 0b101000010100010110100101000101;
// 一个64位的long值(注意末尾的后缀「L」)
long aLong = 0b101000010L;
// 二进制字面值以0b或0B开头,不区分大小写
int anInt2 = 0B101;

在Java SE 7中,还支持以下划线作为分隔符联接的数值表示方式:

//十进制形式
int anInt1 = 123_45_6;
//二进制、十六进制等形式也支持
int anInt2 = 0b10_0110_100;
int anInt3 = 0xFF_EC_DE_5E;
//小数形式也支持
float pi = 3.14_15F;
double aDouble = 3.14_15;
//多个下划线相连
int chain = 5______2____0;

不过以下几种书写形式是错误的:

//下划线不能放在最后
int x = 52_;    //错误
//下划线不能邻近小数点(邻近小数点前后都不行)
float pi1 = 3_.1415F;  // 错误
float pi2 = 3._1415F;  //错误
//下划线不能紧放在后缀「L」或「F」的前面
float pi3 = 3.1415_F;  //错误
long aLong1 = 999_99_9999_L;//错误
//下划线不能放在表示进制的前缀字符之间
int x5 = 0_x52;    //错误

此外,还要注意下面这种,将下划线放在最前面的情况:

int _52 = 120; //在Java中,变量名称不能以数字开头,但可以下划线开头
int x = _52;  //所以,这里的_52并不是一个数字的字面值形式,而是一个变量标识符(变量名)
(0)

相关推荐

  • 浅谈java的byte数组的不同写法

    (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是"byte",即每一个byte都可以用二进制.十六进制.十进制来表示. 二进制:00010110----->0*2^8 + 0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = 22 16进制: 0x16 -----

  • Java保留两位小数的几种写法总结

    本文列举了几个方法: 1. 使用java.math.BigDecimal 2. 使用java.text.DecimalFormat 3. 使用java.text.NumberFormat 4. 使用java.util.Formatter 5. 使用String.format 文章末尾给大家分享了更多的拓展知识,另外可以自己实现或者借用封装好的类库来实现,在这篇文章中就不一一列举了. 下面来看看详细的介绍. 一.使用BigDecimal,保留小数点后两位 public static String

  • java定义二维数组的几种写法(小结)

    如下所示: //定义二维数组写法1 class numthree { public static void main(String[] args) { float[][] numthree; //定义一个float类型的2维数组 numthree=new float[5][5]; //为它分配5行5列的空间大小 numthree[0][0]=1.1f; //通过下标索引去访问 1行1列=1.1 numthree[1][0]=1.2f; // 2行1列=1.2 numthree[2][0]=1.3

  • 详解Java编程中if...else语句的嵌套写法

    if...else if...else语句 if语句后面可以跟elseif-else语句,这种语句可以检测到多种可能的情况. 使用if,else if,else语句的时候,需要注意下面几点: if语句至多有1个else语句,else语句在所有的elseif语句之后. If语句可以有若干个elseif语句,它们必须在else语句之前. 一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行. 语法 if...else语法格式如下: if(布尔表达式 1){

  • Java中List与Map初始化的一些写法分享

    Java的在还没有发现新写法之前时,我一直是这么初始化List跟Map: 复制代码 代码如下: //初始化List    List<string> list = new ArrayList</string><string>();    list.add("www.jb51.net");    list.add("string2");    //some other list.add() code......    list.add

  • Java编程中静态内部类与同步类的写法示例

    java静态内部类 将某个内部类定义为静态类,跟将其他类定义为静态类的方法基本相同,引用规则也基本一致.不过其细节方面仍然有很大的不同.具体来说,主要有如下几个地方要引起各位程序开发人员的注意.     (一)一般情况下,如果一个内部类不是被定义成静态内部类,那么在定义成员变量或者成员方法的时候,是不能够被定义成静态成员变量与静态成员方法的.也就是说,在非静态内部类中不可以声明静态成员.     (二)一般非静态外部类可以随意访问其外部类的成员变量以及方法(包括声明为private的方法),但是

  • java中驼峰与下划线的写法互转

    前言 在实际项目开发中,会碰到这样的问题,数据库表结构设计好了,可实体类还没相应地弄出来.实体类的属性命名方法一般是驼峰法,而数据库中的表字段命名方法用的是下划线法.如果表的字段非常多,我们根据设计好的数据库字段再手动敲写一遍驼峰法的属性,这有点费时了.如何迅速地把数据库中的表字段变成我们所需要的驼峰式的属性呢? 解决方法有二,一是通过文本编辑工具,如EditPlus,Notepad++等,利用它们携带的正则替换功能来迅速实现:二是通过自己编写工具类来实现.至于第一种方法操作技巧,不在这边赘述.

  • Java中单例模式的7种写法

    第一种(懒汉,线程不安全): public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 这种写法lazy loading很明显,但是致命的是在多线程不能正常工作.

  • 在Java中使用下划线分隔数的字面值的用法讲解

    在Java SE 7中新增了以二进制形式的字面值表示方式,你可以像使用十进制一样,方便地使用二进制形式的字面值来表示数值. 例如: // 一个8位的byte值: byte aByte = 0b100001; // 一个16位的short值: short aShort = 0b1010010100101; // 一个32位的int值: int anInt1 = 0b101000010100010110100101000101; // 一个64位的long值(注意末尾的后缀「L」) long aLo

  • Python3中_(下划线)和__(双下划线)的用途和区别

    在看一些Python开源代码时,经常会看到以下划线或者双下划线开头的方法或者属性,到底它们有什么作用,又有什么样的区别呢?今天我们来总结一下(注:下文中的代码在Python3下测试通过) _ 的含义 在python的类中没有真正的私有属性或方法,没有真正的私有化. 但为了编程的需要,我们常常需要区分私有方法和共有方法以方便管理和调用.那么在Python中如何做呢? 一般Python约定加了下划线 _ 的属性和方法为私有方法或属性,以提示该属性和方法不应在外部调用,也不会被from ModuleA

  • java中栈和队列的实现和API的用法(详解)

    在java中要实现栈和队列,需要用到java集合的相关知识,特别是Stack.LinkedList等相关集合类型. 一.栈的实现 栈的实现,有两个方法:一个是用java本身的集合类型Stack类型:另一个是借用LinkedList来间接实现Stack. 1.Stack实现 直接用Stack来实现非常方便,常用的api函数如下: boolean        isEmpty() // 判断当前栈是否为空 synchronized E        peek() //获得当前栈顶元素 synchro

  • Java中超详细this与super的概念和用法

    前言:理论和代码必须结合起来才能真正的掌握 一.this 概念:this代表着当前对象的引用,也是当前函数所属对象的引用.直白的说,哪个对象调用了当前函数,this就代表哪个对象. 常见的用法(理论不理解就先参考下面案例) 最常见的情况是是对象的一个属性或被构造器的参数屏蔽时,如果需要调用屏蔽的属性,this就代表哪个对象 this只能在方法内使用,表示正在调用方法的那个对象,但是,如果在方法内调用同一个类的另一个方法,就不必使用this,直接调用即可,this关键字是能省则省 this和sta

  • python中单下划线(_)和双下划线(__)的特殊用法

    函数使用单下划线_开头 使用单下划线(_)开头的函数_func不能被模块外部以: from module import *形式导入. 但可以用:from module import _func形式单独导入. 类属性和类方法使用单下划线_开头 _开头为保护类型的属性和方法,仅允许类内部和子类访问,类实例无法访问此属性和方法. 类属性和类方法使用双下划线__开头 __开头为私有类型属性和方法,仅允许类内部访问,类实例和派生类均不能访问此属性和方法. 所以双划线比单划线权限更严格. 补充说明 对于__

  • Java中PriorityQueue实现最小堆和最大堆的用法

    一.基本介绍 1.介绍 学习很多算法知识,力争做到最优解的学习过程中,很多时候都会遇到PriorityQueue(优先队列).一个基于优先级堆的无界优先级队列.优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法.优先级队列不允许使用 null 元素.依靠自然顺序的优先级队列还不允许插入不可比较的对象,这样做可能导致 ClassCastException. 此队列的头是按指定排序方式确定的最小元素.如果多个元素都是最小值,则

  • Python中的下划线详解

    这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大部分(不全是)都是一种惯例约定. 一. 单个下划线直接做变量名(_) 主要有三种情况: 1. 解释器中 _符号是指交互解释器中最后一次执行语句的返回结果.这种用法最初出现在CPython解释器中,其他解释器后来也都跟进了. 复制代码 代码如下: >>> _ Traceback (most recent call last):   File "", line 1, in Nam

  • Java中的日期和时间类以及Calendar类用法详解

    Java日期和时间类简介 Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个: Date():使用当前的日期和时间初始化一个对象. Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒.如果运行 Java 程序的本地时区是北京时区(

  • 解析Java中PriorityQueue优先级队列结构的源码及用法

    一.PriorityQueue的数据结构 JDK7中PriorityQueue(优先级队列)的数据结构是二叉堆.准确的说是一个最小堆. 二叉堆是一个特殊的堆, 它近似完全二叉树.二叉堆满足特性:父节点的键值总是保持固定的序关系于任何一个子节点的键值,且每个节点的左子树和右子树都是一个二叉堆. 当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆. 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆. 下图是一个最大堆 priorityQueue队头就是给定顺序的最小元素. prio

  • Java 中 String,StringBuffer 和 StringBuilder 的区别及用法

    1 简介 在 Java 语言中,共有 8 个基本的数据类型,分别为:byte.short.int.long.float.double.boolean 和 char,其中 char 类型用于表示单个字符,例如 a.b.c .A.B.C.& 这些大小写字母或者特殊字符等等.在实际的编程中,单个的字符并没有我们想象中用的那么频繁,反而是多个字符组成的"字符串"更为常见,但是在基本的数据类型中,并没有字符串这种数据类型.为了解决这个问题,Java 语言为我们提供了一个被 final 关

随机推荐