JavaSE之Long 详解 Long的方法简介以及用法

基本功能


Long 类在对象中包装了基本类型 long 的值

每个 Long 类型的对象都包含一个 long 类型的字段

static long MAX_VALUE long 8个字节
最大值2^63-1
十六进制:  0x8000000000000000L
static long MIN_VALUE 最小值-2^63
十六进制:
0x7fffffffffffffffL
static int SIZE
二进制补码形式表示值时的位数

@Native public static final int SIZE = 64; 8个字节就是64位

static Class<Long> TYPE 表示基本类型 long 的 Class 实例

方法分类

实例方法

构造方法
可以通过long或者String构造

字符串参数形式的方法,  内部调用parseLong

java.lang.Long.Long(long)

java.lang.Long.Long(String)

获取指定类型的值
直接返回强转形式

比如:

(byte)value   (short)value   ......


java.lang.Long.byteValue()

java.lang.Long.shortValue()

java.lang.Long.intValue()

java.lang.Long.longValue()

java.lang.Long.floatValue()

java.lang.Long.doubleValue()

对象常规方法
toString依赖静态方法 static String toString(long i)
hashCode 依赖静态方法 hashCode static int hashCode(long value)
equals 比较内部值是否相同

compareTo 依赖静态方法static int compare(long x, long y)

java.lang.Long.toString()

java.lang.Long.hashCode()

java.lang.Long.equals(Object)

java.lang.Long.compareTo(Long)

此系列都是获取指定系统属性的long值相关

第一个参数是通过 System.getProperty(java.lang.String) 方法可以访问到的系统属性的名称

以 long 值的形式解释此属性的字符串值,并返回表示此值的 Long 对象

也就是说参数String为一个系统属性的字符串名称

如果指定名称没有属性,或者指定名称为空或 null,抑或属性不具有正确的数字格式时,则返回 null

并不是转换解析字符串为Long,并不是转换解析字符串为Long,并不是转换解析字符串为Long,


java.lang.Long.getLong(String)

java.lang.Long.getLong(String, long)

java.lang.Long.getLong(String, Long)

由上面实例方法的依赖性也可以看得出来,Long类本身静态方法的强大

静态工具方法


toXXXString就是转换为String形式

具体的XXX是什么就是转换为 什么

toString(long, int)转换为指定进制表示的字符串形式,toString(long)为简化版默认十进制


toString(long)

toString(long, int)

toUnsignedString(long, int)转换为指定进制表示的无符号整数的字符串形式
toUnsignedString(long)为简化版默认十进制

toUnsignedString(long, int)

toUnsignedString(long)

以十六进制无符号整数形式返回 long 参数的字符串表示形式
以八进制无符号整数形式返回 long 参数的字符串表示形式
以二进制无符号整数形式返回 long 参数的字符串表示形式

toHexString(long)

toOctalString(long)

toBinaryString(long)

parseLong 都是将字符串解析为long,  基本类型!
parseLong(String, int)将 string 参数解析为第二个参数指定进制形式的有符号的 long
parseLong(String)为简化形式,默认十进制
parseUnsignedLong是parseLong的无符号形式
类似,双参数指定基数进制,单参数默认十进制
使用时需要注意,对应基数(进制)的转换,需要对应的字符,比如十进制你就不能出现十六进制的A

parseLong(String, int)

parseLong(String)

parseUnsignedLong(String, int)

parseUnsignedLong(String)

valueOf都是将字符串解析为Long,  包装类型
但是,在-128~127之间会使用缓存的值,不在范围内的创建新对象
所以,除非有必要特意创建对象,否则应该使用这个来获取Long对象
valueOf(String, int) 转换指定基数的字符串为Long,  valueOf(String)为他的十进制形式

valueOf(String, int)

valueOf(String)

valueOf(long)

hashCode(long)
对于基本类型long的求和 和 大小比较,返回符合条件的long
sum(long, long)

max(long, long)

min(long, long)


可以直接将指定形式的字符串进行解析 根据字符串的前缀进行自动匹配
然后,返回一个Long
decode(String)
比较大小与无符号比较大小

无符号的先转换下,然后调用compare

compare(long, long)

compareUnsigned(long, long)

无符号的商与求余
divideUnsigned(long, long)

remainderUnsigned(long, long)

返回符号
如果指定值为负,则返回值 -1
如果指定值为零,则返回 0
如果指定值为正,则返回 1
signum(long)

reverse表示翻转,翻转就是从前往后颠倒过来

逐个比特进行翻转 或者逐个字节(也就是8位为一个单位)进行翻转

看下图就很容易理解

188的二进制 1011  1100



reverse(long)

reverseBytes(long)

rotate表示循环移位
循环左移和循环右移
移位负数距离等同于另一个方向的移位


rotateLeft(long, int)

rotateRight(long, int)

api解释比较抽象,直白的说就是二进制补码序列中
选择从左边开始数(高位)第一个1  或者从右边开始数(低位)第一个1
其余的位置全都写0
所以,对于highestOneBit
如果是0 返回0 ,因为没有一个1
如果是负数,返回的就是最左边一位是1 其余全都是0 也就是Long的最小值
如果是正数,第一位就是原来的最高位,但是抹掉了所有的零头,就是小于等于这个数的第一个2的N次方
对于highestOneBit 
如果是0 返回0
否则返回的将是2的N次方   形如1 ....n个零

highestOneBit(long)

lowestOneBit(long)

与highestOneBit  和 lowestOneBit,本质是互通的,找到了1的位置也就知道了0的个数
知道了0的个数,也就找到了1的位置
返回的是这两个位置的地方,左边和右边的零的个数


numberOfLeadingZeros(long)

numberOfTrailingZeros(long)

返回二进制补码形式下1的个数
bitCount(long)

特别注意:


value of 与new Long

valueOf就是根据指定的long或者String 返回一个Long对象


java.lang.Long.valueOf(long)是根本方法

可以看得出来,他会使用LongCache缓存256个对象(0~255)

静态内部类,使用的时候,static块中初始化

java.lang.Long.valueOf(String, int)是借助于parseLong进行转换

java.lang.Long.valueOf(String)是他的默认的十进制形式的

简言之就是最核心是valueOf(long),在指定范围内他是有缓存的,不在指定范围内,那么将会创建对象
所以,如果可以,尽量不要使用new Long

parseLong

从valueOf看得出来,带参数的借助的都是parseLong
parseLong是返回的long 基本数据类型,valueOf相当于他的装箱形式(当然,valueOf还有使用缓存数据的功能)

decode(String nm)

decode将字符串转换为Long,听起来好像跟valueOf 差不多
都是根据字符串转变为Long对象
但是ValueOf要么指定基数要么就是默认十进制,而且不认识0X.#这种形式
decode不需要指定基数,可以根据字符串的前缀进行自己判断基数,用起来比valueOf更加灵活


getLong


getLong根本就不是看起来的样子

java.lang.Long.getLong(String)

java.lang.Long.getLong(String, long)

java.lang.Long.getLong(String, Long)

他只是valueOf的一个非常小的子集,仅仅是字符串为系统属性的某个变量名时,才是可以用的 ,才是可以解析的

你传入getLong("16"),根本不行


原文地址:https://www.cnblogs.com/noteless/p/9626933.html

时间: 2024-08-01 04:57:59

JavaSE之Long 详解 Long的方法简介以及用法的相关文章

linux rm 命令详解及使用方法实战【初级】

rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就提到了rm命令,现在我们来详细介绍一下linux中删除文件和目录的命令, rm命令,rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. 名称 rm - remove files o

linux pwd 命令详解及使用方法实战【初级】

pwd:查看当前工作目录 前言: Linux中用 pwd 命令来查看”当前工作目录“的完整路径,就是经常提及的所在目录,多用在生产环境多级目录中查看当前所在路径,使用此命令能给运维人员/操作人员带来很多方便,当你不确定在什么目录下时即可直接键入此命令来进行“定位”. 上次分享的mkdir 命令详解及使用方法实战[初级]中提到过pwd当时只是简单的概括了一句,此处给大家详细讲解一下pwd使用方法,从而在将来的生产环境中更好的驾驭linux操作系统. 名称 pwd-print name of cur

linux mkdir 命令详解及使用方法实战【初级】

mkdir命令详解及使用方法实战 名称 MKDIR 是 make directories 的缩写 使用方法 mkdir [选项(如-p)] ...目录名称(及子目录注意用分隔符隔开)...    如使用mkdir建立一个多级目录则要使用-P命令 如: mkdir /lcp 是在根(/)目录下建立一个名为lcp的文件夹 mkdir -p /lcp/abc 则是在根(/)目录下建一个名为lcp的文件夹同时在此文件夹中建立名为abc的文件夹 描述 创建目录(IES),如果他们不存在. 长选项必须用的参

ListView使用详解,listActivity使用方法

OPhone开发中经常会用到各种各样的组件,像TextView,Button等等.其中经常会使用到ListView(列表),ListView以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.本篇将由浅入深的介绍几种列表,并着重介绍如何自定义列表.具体的表现形式如图1所示.在OPhone系统中,列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据    具体的将被映射的字符串,图片,或者基本组件. 根据

AIX下PVID详解及其修改方法

AIX 下 PVID 详解及其修改方法 1.PVID 是什么 PVID 全称 physical volume identifier,它非常重要,相当于软序列号,当把一个磁盘变成 PV 时, 就生成了 PVID , PVID 是由机器序列号 (uname -m的前 8位 ) 和它生成的时间组成,这种机制保证了 PVID 的唯一性.当系统启动时,磁盘配置程序会寻找磁 盘上的 PVID ,并把它跟 ODM 库中的 PVID 信息进行比 对,如果在 ODM 中找到匹配的条目,则把和这个 PVID 相对应

RabbitMQ详解(一)------简介与安装(Docker)

RABBITMQ详解(一)------简介与安装(DOCKER) 刚刚进入实习,在学习过程中没有接触过MQ,RabbitMQ 这个消息中间件,正好公司最近的项目中有用到,学习了解一下. 首先什么是MQ: MQ(message queue) : MQ是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排

kafka详解一、Kafka简介

背景: 当今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统. 从一个微观层面来说,这种需求也可理解为不同的系统之间如何传递消息. Kafka诞生:由 linked-in 开源 kafka-

LVS类型详解及其调度方法

1.LVS简介 LVS 是 Linux  Virtual Server ,Linux 虚拟服务器.可以实现LINUX平台下的简单负载均衡.一般来说,LVS采用三层结构:负载调度器.服务器池.共享存储.工作在TCP/IP协议的四层,其转发是依赖于四层协议的特征进行转发的,由于其转发要 依赖于协议的特征进行转发,因此需要在内核的TCP/IP协议栈进行过滤筛选,可想而知,这就需要在内核的模块来完成,而这样的过滤转发规则又是由管理员 进行定义的,所以,LVS就是两段式的架构设计,在内核空间中工作的是"i

Tomcat记录-tomcat常用配置详解和优化方法

常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是server.xml. /logs:存放日志文件. /server/webapps:来管理Tomcat-web服务用的.仅对TOMCAT可见,对所有的WEB APP都不可见(使用Catalina类加载器加载). /shared/lib:仅对所有WEB APP可见,对TOMCAT不可见(使用Shared类加载