JDK源码解析之 java.lang.Long

Long 与Integer 是数值类型中使用频率最高的两个,也是提供支持方法最多的两个
他们提供出来的方法功能也是高度的相似

一、类定义

public final class Long extends Number implements Comparable<Long> {}
  • 类被声明为final的,表示不能被继承;
  • 继承了Number抽象类,可以用于数字类型的一系列转换;
  • 实现了Comparable接口,强行对实现它的每个类的对象进行整体排序

二、成员变量

//值为  2^63-1 的常量,它表示 long 类型能够表示的最大值
@Native public static final long MIN_VALUE = 0x8000000000000000L;
//值为 -2^63 的常量,它表示 long 类型能够表示的最小值
@Native public static final long MAX_VALUE = 0x7fffffffffffffffL;
//用来以二进制补码形式表示 long 值的比特位数
@Native public static final int SIZE = 64;
//二进制补码形式表示 long 值的字节数
public static final int BYTES = SIZE / Byte.SIZE;
//表示基本类型 long 的 Class 实例
@SuppressWarnings("unchecked")
public static final Class<Long>     TYPE = (Class<Long>) Class.getPrimitiveClass("long");

三、构造器

//构造一个新分配的Long对象,该对象表示指定的long参数。
public Long(long value) {this.value = value;
}
//构造一个新分配的Long对象,该对象表示参数long指示的 String 的值。
public Long(String s) throws NumberFormatException {this.value = parseLong(s, 10);
}

四、常用方法

1、toString(long i, int radix)

返回String表示指定的对象 long

public static String toString(long i, int radix) {if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)radix = 10;if (radix == 10)return toString(i);char[] buf = new char[65];int charPos = 64;boolean negative = (i < 0);if (!negative) {i = -i;}while (i <= -radix) {buf[charPos--] = Integer.digits[(int)(-(i % radix))];i = i / radix;}buf[charPos] = Integer.digits[(int)(-i)];if (negative) {buf[--charPos] = '-';}return new String(buf, charPos, (65 - charPos));
}

toBinaryString(long i):返回long`以2为底的无符号整数形式返回参数的字符串表示形式。

toHexString(long i): 返回long 以16为底的无符号整数形式返回参数的字符串表示形式。

toOctalString(long i):返回long以8为底的无符号整数形式的参数字符串表示形式。

toUnsignedString(long i): 以无符号十进制值形式返回参数的字符串表示形式。

toUnsignedString(long i, int radix): 返回第一个参数的字符串表示形式,作为第二个参数指定的基数中的无符号整数值。

2、getChars(long i, int index, char[] buf)

将long值复制到目标字符数组。

static void getChars(long i, int index, char[] buf) {long q;int r;int charPos = index;char sign = 0;if (i < 0) {sign = '-';i = -i;}// Get 2 digits/iteration using longs until quotient fits into an intwhile (i > Integer.MAX_VALUE) {q = i / 100;// really: r = i - (q * 100);r = (int)(i - ((q << 6) + (q << 5) + (q << 2)));i = q;buf[--charPos] = Integer.DigitOnes[r];buf[--charPos] = Integer.DigitTens[r];}// Get 2 digits/iteration using intsint q2;int i2 = (int)i;while (i2 >= 65536) {q2 = i2 / 100;// really: r = i2 - (q * 100);r = i2 - ((q2 << 6) + (q2 << 5) + (q2 << 2));i2 = q2;buf[--charPos] = Integer.DigitOnes[r];buf[--charPos] = Integer.DigitTens[r];}// Fall thru to fast mode for smaller numbers// assert(i2 <= 65536, i2);for (;;) {q2 = (i2 * 52429) >>> (16+3);r = i2 - ((q2 << 3) + (q2 << 1));  // r = i2-(q2*10) ...buf[--charPos] = Integer.digits[r];i2 = q2;if (i2 == 0) break;}if (sign != 0) {buf[--charPos] = sign;}
}
3、compareTo
//两个对象进行比较   ,实际比较两个对象的value值
//根本还是通过调用compare(long x, long y)
public int compareTo(Long anotherLong) {return compare(this.value, anotherLong.value);
}
//三目表达式
public static int compare(long x, long y) {return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
4、compareUnsigned(long x, long y)

两个基本类型int 当做无符号数进行比较 通过+MIN_VALUE进行转换
根本还是调用static int compare(long x, long y)

public static int compareUnsigned(long x, long y) {return compare(x + MIN_VALUE, y + MIN_VALUE);
}

剩下的方法和Integer雷同很多,以后再更

五、总结

Long 与Integer 是数值类型中使用频率最高的两个,也是提供支持方法最多的两个

他们提供出来的方法功能也是高度的相似

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sed教程入门与实例练习(一)

UNIX 世界中有很多文本编辑器可供我们选择。思考一下 — vi、emacs 和 jed 以及很多其它工具都会浮现在脑海中。我们都有自己已逐渐了解并且喜爱的编辑器&#xff08;以及我们喜爱的组合键&#xff09;。有了可信赖的编辑器&#xff0c;我们可以轻松处理任何数量与 UNIX 有关的…

JDK源码解析之 Java.lang.Short

Short类是基本类型short 的包装类&#xff0c;它包含几种有效处理短值的方法&#xff0c;如将其转换为字符串表示形式&#xff0c;反之亦然。Short类的对象可以包含单个短值。 一、类定义 public final class Short extends Number implements Comparable<Short> {}类被…

sed教程入门与实例练习(二)

让我们看一下 sed 最有用的命令之一&#xff0c;替换命令。使用该命令&#xff0c;可以将特定字符串或匹配的规则表达式用另一个字符串替换。下面是该命令最基本用法的示例&#xff1a; $ sed -e ’s/foo/bar/’ myfile.txt上面的命令将 myfile.txt 中每行第一次出现的 ‘foo’…

Oracle GoldenGate简介

一、什么是Oracle GoldenGate&#xff1f; Oracle GoldenGate是用于实时数据集成和复制的综合软件包。它支持高可用性解决方案&#xff0c;实时数据集成&#xff0c;事务性更改数据捕获&#xff0c;数据复制&#xff0c;转换以及运营和分析企业系统之间的验证。 使用Oracle G…

sed教程入门与实例练习(三)

在第二篇 sed 文章中&#xff0c;我提供了一些示例来演示 sed 的工作原理&#xff0c;但是它们当中很少有示例能实际做特别有用的事。在这篇 sed 系列的最后文章中&#xff0c;我要改变那种方式&#xff0c;并使用 sed 来做实际的事。我将为您显示几个示例&#xff0c;它们不仅…

Oracle GoldenGate微服务架构

Oracle GoldenGate支持两种架构&#xff0c;经典架构和微服务架构&#xff08;MA&#xff09;。 可以出于以下目的配置Oracle GoldenGate&#xff1a; 从一个数据库中静态提取数据记录&#xff0c;并将这些记录加载到另一个数据库中。连续提取和复制事务性数据处理语言&#…

Oracle GoldenGate经典架构

可以使用Oracle GoldenGate Classic Architecture从命令行配置和管理数据复制。 图示的说明logicalarch2.png 注意&#xff1a; 这是基本配置。根据业务需求和用例&#xff0c;可以配置此模型的不同变体。 1、Manager Manager是Oracle GoldenGate的控制过程。必须先在Oracl…

WordPress 首页显示摘要

这里的方法不需要你另外装插件。 1、使用more标签 (缺点&#xff1a;每次都要加一下这个东西&#xff0c;不灵活只能一刀切。优点&#xff1a;方法比较正规不需要改动模版) 在你需要截断的地方(就是你的编辑框)加 <!–more–> 代码. 2、使用the_excerpt标签 (缺点&#x…

Oracle GoldenGate复制过程

这两种Oracle GoldenGate体系结构共有许多数据复制过程。 1、什么是Extract&#xff1f; Extract是一个过程&#xff0c;该过程被配置为针对源数据库运行或被配置为在下游挖掘数据库&#xff08;仅Oracle&#xff09;上运行&#xff0c;以捕获在其他位置的真实源数据库中生成…

awk教程入门与实例练习(一)

Awk 是一种非常好的语言&#xff0c;同时有一个非常奇怪的名称。在本系列&#xff08;共三篇文章&#xff09;的第一篇文章中&#xff0c;Daniel Robbins 将使您迅速掌握 awk 编程技巧。随着本系列的进展&#xff0c;将讨论更高级的主题&#xff0c;最后将演示一个真正的高级 a…

HDFS-简介

HDFS 是 Hadoop Distribute File System 的简称&#xff0c;意为&#xff1a;Hadoop 分布式文件系统&#xff0c;是一种旨在在商品硬件上运行的分布式文件系统。它与现有的分布式文件系统有许多相似之处。但是&#xff0c;与其他分布式文件系统的区别很明显。HDFS具有高度的容错…

awk教程入门与实例练习(二)

在这篇 awk 简介的续集中&#xff0c;Daniel Robbins 继续探索 awk&#xff08;一种很棒但有怪异名称的语言&#xff09;。Daniel 将演示如何处理多行记录、使用循环结构&#xff0c;以及创建并使用 awk 数组。阅读完本文后&#xff0c;您将精通许多 awk 的功能&#xff0c;而且…

HDFS-配置项

一、core-site.xml与core-default.xml core-default.xml与core-site.xml的功能是一样的&#xff0c;如果在core-site.xml里没有配置的属性&#xff0c;则会自动会获取core-default.xml里的相同属性的值 <configuration><property><!-- 这个属性用来指定namenod…

awk教程入门与实例练习(三)

在 awk 系列的这篇总结中&#xff0c;Daniel 向您介绍 awk 重要的字符串函数&#xff0c;以及演示了如何从头开始编写完整的支票簿结算程序。在这个过程中&#xff0c;您将学习如何编写自己的函数&#xff0c;并使用 awk 的多维数组。学完本文之后&#xff0c;您将掌握更多 awk…

HDFS-常用命令

1. -help&#xff1a;显示帮助信息 hadoop fs -help rmshel2. -ls&#xff1a;显示目录信息 hadoop fs -ls /3. -mkdir&#xff1a;在HDFS上创建目录 hadoop fs -mkdir -p /user/ha4. -moveFromLocal&#xff1a;从本地剪切粘贴到HDFS hadoop fs -moveFromLocal ~/test.txt…

如何关闭WINDOWS2003 DEP数据保护功能

近来很多朋友和客户都使用了WINDOWS2003来架设自己的GAME SERVER,但有很多朋友反映说,不如WINDOWS2000好,原因不是稳定,而是成功率高,和简单.但我个人觉得WINDOWS2003还是不错的系统,如果朋友们都不用这个系统,而用WINDOWS2000 有点不值得了.我就开始找寻这样的问题.我对GAME 不…

JDK源码解析之 java.lang.Thread

位于java.lang包下的Thread类是非常重要的线程类&#xff0c;它实现了Runnable接口&#xff0c;今天我们来学习一下Thread类&#xff0c;在学习Thread类之前&#xff0c;先介绍与线程相关知识&#xff1a;线程的几种状态、上下文切换&#xff0c;然后接着介绍Thread类中的方法的…

TASKLIST

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]参数列表:/S system 指定连接到的远程系统。/U [domain/]user 指定使用哪个用户执行这个命令。/P [password] 为指定的用户指定密码。/SVC 显示每个进程中的服务…

JDK源码解析之 java.lang.ThreadLocal

此类提供线程局部变量。这些变量与普通变量不同&#xff0c;每个访问一个线程&#xff08;通过其get或set方法&#xff09;的线程 都有其自己的&#xff0c;独立初始化的变量副本。 ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段&#xff08;例如&#xff0c…

华尔街顶级大师胡立阳名言

1.不要听“亲朋好友”的话&#xff0c;他们只会让你成为“平凡人”。 2.不要只会“用功读书”&#xff0c;重要的是“要读对书”。  3&#xff0e;不要只是“努力工作”&#xff0c;重要的是“做对工作”。   4.不要指示结交“志趣相投”的朋友&#xff0c;否则你永远只看到…