[二]基础数据类型之Long详解
程序员文章站
2022-04-14 22:33:31
Long 是常用的数据类型之一,本文介绍了Long内部的构造以及常用的方法,并对一些方法进行了简单的分析以及罗列了注意点 ......
long
long 基本数据类型long 的包装类
long 类型的对象包含一个 long类型的字段
属性简介
值为 263-1 的常量,它表示 long 类型能够表示的最大值 | @native public static final long max_value = 0x7fffffffffffffffl; |
值为 -263 的常量,它表示 long 类型能够表示的最小值 | @native public static final long min_value = 0x8000000000000000l; |
用来以二进制补码形式表示 long 值的比特位数 | @native public static final int size = 64; |
二进制补码形式表示 long 值的字节数 | public static final int bytes = size / byte.size; |
表示基本类型 long 的 class 实例 | public static final class<long> type = (class<long>) class.getprimitiveclass("long"); |
构造方法
构造方法都是新创建对象,分配新的空间
字符串形式构造,默认以十进制的字符串形式解析
包装类 使用对应的基本数据类型long 构造 |
|
包装类
使用对应的基本数据类型long 的字符串string形式构造
|
常用方法
比较
static int compare(long x, long y) |
静态方法
0 x == y;
-1 x < y;
1 x > y
|
int compareto(long anotherlong)
|
实例方法 两个对象进行比较 ,实际比较两个对象的value值 根本还是通过调用 static int compare(long x, long y) |
static int compareunsigned(long x, long y) |
静态方法 两个基本类型int 当做无符号数进行比较 通过+min_value进行转换 根本还是调用static int compare(long x, long y) |
parsexxx系列
字符串解析 为 基本类型
不需要对象,所以都是静态方法
static long parselong(string s, int radix) | 静态方法 使用第二个参数指定的基数(进制),将字符串参数解析为有符号的整数 除了第一个字符可以是用来表示负值的 ascii 减号 '-' ('\u002d’),加号'+' ('\u002b') 外 字符串中的字符必须都是指定基数的数字 |
static long parselong(string s) |
静态方法 static long parselong(string s, int radix) 的十进制简化形式 |
static long parseunsignedlong(string s, int radix) |
静态方法
使用第二个参数指定的基数(进制),将字符串参数解析为无符号的整数
除了第一个字符可以是用来表示正值的 ascii 加号'+' ('\u002b') 外
字符串中的字符必须都是指定基数的数字
|
static long parseunsignedlong(string s) |
静态方法 static long parseunsignedlong(string s, int radix)的十进制简化形式 |
valueof系列
把基本基本类型 包装为对象
用来创建获得对象,所以无需对象,全都是静态方法
vaueof系列都有对应的缓存区, 缓存区范围内对象为同一个
缓冲区为静态内部类中的数组
缓冲范围为 -128~127
static long valueof(long l) |
静态方法 读取缓存中的对象或者创建新的对象 |
static integer valueof(string s, int radix) |
静态方法 根据指定的基数(进制)解析字符串 根本是调用static long valueof(long l) |
static long valueof(string s)
|
静态方法 十进制 解析字符串 static long valueof(string s, int radix) 的十进制简化形式 根本是调用static long valueof(long l) |
decode
接受通过以下语法给出的十进制、十六进制和八进制数字
sign是可选的 表示符号位
再往后 decimalnumeral 就是指定基数的字符序列的正值
不能是负数,想要设置负数请仅仅使用符号位 也就是+-1 --1这种肯定不行
|
sign decimalnumeral
sign 0x hexdigits
sign 0x hexdigits
sign # hexdigits
sign 0 octaldigits
sign:
-
+
|
与integer中的decode方法一样 代码也都一模一样,除了integer换成了long |
xxxvalue系列
获取对象的某种基本类型的值
需要获取对象的所以必然全部都是实例方法
强制类型转换的形式,将内部的long 值转换为指定的类型
byte bytevalue()
|
|
short shortvalue() | |
int intvalue() | |
long longvalue() | |
float floatvalue() | |
double doublevalue() |
tounsignedstring 系列 tostring toxxxstring 系列
无符号 字符串相关的转换
static string tostring(long i, int radix) |
静态方法
根据指定基数,int 返回一个string
如果基数小于 character.min_radix 或者大于 character.max_radix,默认设置为基数 10
如果是负数 第一个符号位负号 '-' ('\u002d'),如果不是负数,将不会有符号
剩下的字符表示第一个参数的大小
如果大小是0 由字符 '0' ('\u0030') 表示,否则用来表示数值的第一个字符不会是0
用以下 ascii 字符作为数字:
0123456789abcdefghijklmnopqrstuvwxyz
其范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u007a'
如果 radix 为 n, 则按照所示顺序,使用这些字符中的前 n 个作为其数字
因此,十六进制(基数为 16)的数字是 0123456789abcdef
|
static string tostring(long i) |
静态方法
tostring(long i, int radix)的十进制简化形式
同tostring(long i, 10)
|
string tostring() |
实例方法
等同于把对象的value直接调用 tostring(long i)
|
static string tobinarystring(long i) |
静态方法
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式
|
static string tooctalstring(long i) |
静态方法
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式
|
static string tohexstring(long i) |
静态方法
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式
|
static string tounsignedstring(long i, int radix) |
静态方法 在第二个参数指定的基数中,返回第一个参数的字符串表示的无符号整数值
如果基数不在character.min_radix 和 character.max_radix的范围内, 默认基数为10
如果大小是0,由字符零表示 '0' ('\u0030')
否则第一个字符不会是 0
基数和表示数字的字符的用法和表现和tostring中一样
|
static string tounsignedstring(long i) |
静态方法 tounsignedstring(long i, int radix) 十进制的简化形式 同tounsignedstring(int, 10) |
equals
long重写了equals方法 比较的是两个long对象中内部的 long value值 |
hashcode
static int hashcode(long value) |
静态方法 返回某个long 数值的hashcode |
int hashcode() |
实例方法 获取某个long对象的hashcode 等同于static int hashcode(long value) 调用 内部value值 |
getxxx系列
获取系统属性的数值
static long getlong(string nm, long val) |
确定具有指定名称的系统属性的整数值
第一个参数被视为系统属性的名称
通过 system.getproperty(java.lang.string) 方法可以访问系统属性
第二个参数是默认值
如果未具有指定名称的属性,或者属性的数字格式不正确,或者指定名称为空或 null
则返回一个表示第二个参数的值的 integer 对象
|
static long getlong(string nm, long val) |
static long getlong(string nm, long val) 的基本类型形式 |
static long getlong(string nm) |
|
其他方法
最高1 位 最低1 位 前置零个数 和 后置0个数 |
highestonebit(long) / lowestonebit(long)
numberofleadingzeros(long) / numberoftrailingzeros(long)
|
位数 循环左移/循环右移 按位翻转 按照字节翻转 |
bitcount(long) 二进制补码表示形式中的 1 位的数量
rotateleft(long, int) / rotateright(long, int)
reverse(long) / reversebytes(long)
|
取整 求余 |
divideunsigned(long, long)
remainderunsigned(long, long)
|
与integer 一样, long也有提供上述几个方法
语义一致
static int signum(long i) |
静态方法 返回指定 int 值的符号函数 (如果指定值为负,则返回 -1;如果指定值为零,则返回 0;如果指定的值为正,则返回 1 ) |
static long sum(long a, long b) |
静态方法 求和 |
static long max(long a, long b) |
静态方法 最大值 |
static long min(long a, long b) |
静态方法 最小值 |
long 与integer 是数值类型中使用频率最高的两个,也是提供支持方法最多的两个
他们提供出来的方法功能也是高度的相似
上一篇: python之next和send用法详解
下一篇: 法国总统萨克齐收到一封密件