Java的long和bigint长度对比详解
Java中Long的值大小比较
java.util.Lang对象吧,而不是基本类型long (注意大小写)
Java中如果使用==双等于比较对象,等于比较的是两个对象的内存地址,也就是比较两个对象是否是同一个对象
如果比较两个Long对象值是否相等,则不可以使用双等号进行比较,可以采用如下方式:
1.使用equals方法
Longa=newLong(3); Longb=newLong(3); System.out.println(a.equals(b));
2.使用Long类型中的longValue()方法进行比较,如
Longa=newLong(3); Longb=newLong(3); System.out.println(a.longValue()==b.longValue());
因为Long为long的封装对象类型,因此比较大小的时候不能用'=='
用java数组实现BigInt超大整数设计
package com.test; import org.apache.commons.lang.StringUtils; /** * @author jsczxy2 * */ public class BigInt { public static void main(String[] args) { BigInt a = new BigInt("367892732043217489143432876442367892732043217489143432876442367892732043217489143432876442367892732043217489143432876442"); BigInt b = new BigInt("3678927329999999999999994328736789273299999999999999943287367892732043217489143432876442367892732043217489143432876442"); System.out.println(a.toString()); System.out.println(b.toString()); System.out.println(a.add(b)); } private int[] arrayint = new int[100]; public BigInt(String num) { //分解数字到int数组中 splitNumToArray(num); } public void splitNumToArray(String num) { int j = 0; StringBuffer sb = new StringBuffer(); //数字全部翻转后分组截取后再翻转回来加入int数组,这里控制数组中每一个int元素恒定为8位不超过int最大长度 num = new StringBuffer(num).reverse().toString(); for (int i = 0; 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; } } } return sb.toString(); } //BigInt数字进行加法运算 public String add(BigInt bigInt) { int[] a = this.arrayint; int[] b = bigInt.arrayint; int[] result = new int[100]; //根据各种情况进行结果赋值 for(int i=0;i 8){ result[i] = Integer.valueOf(String.valueOf(result[i]).substring(1)); result[i+1] = result[i+1] + 1; } } return printArray(result); } //打印BigInt数字 @Override public String toString() { return printArray(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)在磁盘上都是占用4btyes的存储空间。