现在的位置: 首页 > 编程语言 > 正文

Java的long和bigint长度对比详解

2020年02月14日 编程语言 ⁄ 共 2935字 ⁄ 字号 评论关闭

Java 中Long的值大小比较

java.util.Lang 对象吧,而不是基本类型 long (注意大小写)

Java中如果使用 == 双等于比较对象,等于比较的是两个对象的内存地址,也就是比较两个对象是否是同一个对象

如果比较两个Long对象值是否相等,则不可以使用双等号进行比较,可以采用如下方式:

1. 使用 equals 方法

Long a = new Long(3);Long b = new Long(3);System.out.println(a.equals(b));

2. 使用 Long 类型中的 longValue() 方法进行比较,如

Long a = new Long(3);Long b = new Long(3);System.out.println(a.longValue()==b.longValue());

因为Long为long的封装对象类型,因此比较大小的时候不能用'=='

用java数组实现BigInt超大整数设计

packagecom.test;importorg.apache.commons.lang.StringUtils;/***@authorjsczxy2**/publicclassBigInt{publicstaticvoidmain(String[]args){BigInta=newBigInt("367892732043217489143432876442367892732043217489143432876442367892732043217489143432876442367892732043217489143432876442");BigIntb=newBigInt("3678927329999999999999994328736789273299999999999999943287367892732043217489143432876442367892732043217489143432876442");System.out.println(a.toString());System.out.println(b.toString());System.out.println(a.add(b));}privateint[]arrayint=newint[100];publicBigInt(Stringnum){//分解数字到int数组中splitNumToArray(num);}publicvoidsplitNumToArray(Stringnum){intj=0;StringBuffersb=newStringBuffer();//数字全部翻转后分组截取后再翻转回来加入int数组,这里控制数组中每一个int元素恒定为8位不超过int最大长度num=newStringBuffer(num).reverse().toString();for(inti=0;i<num.length();i++){if(i%8==0){if(sb!=null&&!sb.toString().equals("")){arrayint[j]=Integer.valueOf(sb.reverse().toString());j++;sb=newStringBuffer();}}sb.append(num.charAt(i));}if(sb!=null){arrayint[j]=Integer.valueOf(sb.reverse().toString());}}//数组从后开始打印数字,不满8位补齐8位数字用0进行左填充publicStringprintArray(int[]array){StringBuffersb=newStringBuffer();booleanisNotFirstInt=false;for(inti=array.length-1;i>=0;i--){if(array[i]!=0){System.out.println(i+":"+array[i]);if(isNotFirstInt&&String.valueOf(array[i]).length()<8){sb.append(StringUtils.leftPad(String.valueOf(array[i]),8,"0"));}else{sb.append(array[i]);if(!isNotFirstInt)isNotFirstInt=true;}}}returnsb.toString();}//BigInt数字进行加法运算publicStringadd(BigIntbigInt){int[]a=this.arrayint;int[]b=bigInt.arrayint;int[]result=newint[100];//根据各种情况进行结果赋值for(inti=0;i<a.length;i++){if(a[i]==0&&b[i]!=0){result[i]=b[i];}elseif(a[i]!=0&&b[i]==0){result[i]=a[i];}elseif(a[i]!=0&&b[i]!=0){result[i]=a[i]+b[i];}else{result[i]=0;}}//处理结果数组中超过8位的int元素的进位,该int元素截掉1位后再把其后一个元素值加一for(inti=0;i<result.length;i++){if(String.valueOf(result[i]).length()>8){result[i]=Integer.valueOf(String.valueOf(result[i]).substring(1));result[i+1]=result[i+1]+1;}}returnprintArray(result);}//打印BigInt数字@OverridepublicStringtoString(){returnprintArray(arrayint);}}

bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。

int

从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。

smallint

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。

tinyint

从 0 到 255 的整型数据。存储大小为 1 字节。

说明:

int(M) 在 integer 数据类型中,M 表示最大显示宽度,只用于在显示,并不影响存储。在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系 int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。

本文标题: Java的long和bigint长度对比详解

以上就上有关Java的long和bigint长度对比详解的相关介绍,要了解更多Java,long,bigint,长度内容请登录学步园。

抱歉!评论已关闭.