当前位置:主页 > java教程 > Java的long和bigint长度比较

Java的long和bigint长度对比详解

发布:2019-07-04 11:41:42 168


为找教程的网友们整理了相关的编程文章,网友鱼玉轩根据主题投稿了本篇教程内容,涉及到Java、long、bigint、长度对比、Java的long和bigint长度比较相关内容,已被653网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

Java的long和bigint长度比较

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超大整数设计

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 <num.length(); i++) {  
            if (i % 8 == 0) {  
                if (sb != null && !sb.toString().equals("")){  
                    arrayint[j] = Integer.valueOf(sb.reverse().toString());  
                    j++;  
                    sb = new StringBuffer();  
                }  
            }  
                sb.append(num.charAt(i));  
              
        }  
        if (sb != null) {  
            arrayint[j] = Integer.valueOf(sb.reverse().toString());  
        }  
    }  
  
    //数组从后开始打印数字,不满8位补齐8位数字用0进行左填充  
    public String printArray(int[] array) {  
        StringBuffer sb = new StringBuffer();  
        boolean isNotFirstInt = false;  
        for (int i = 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;  
                }  
                  
            }  
        }  
        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<a.length;i++){  
            if(a[i]==0&&b[i]!=0){  
                result[i]=b[i];  
            }else if(a[i]!=0&&b[i]==0){  
                result[i]=a[i];  
            }else if(a[i]!=0&&b[i]!=0){  
                result[i]=a[i]+b[i];  
            }else{  
                result[i]=0;  
            }  
        }  
        //处理结果数组中超过8位的int元素的进位,该int元素截掉1位后再把其后一个元素值加一  
        for(int i=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;  
            }  
        }  
        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) 在磁盘上都是占用 4 btyes 的存储空间。


参考资料

相关文章

  • Java常用内置注解的实例内容

    发布:2020-01-16

    这篇文章主要介绍了Java常用内置注解用法,结合实例形式分析了java使用@SuppressWarnings关闭警告信息以及@Depreca标注的元素不使用两种注解使用方法,需要的朋友可以参考下


  • Java转换流(InputStreamReader/OutputStreamWriter)的使用

    发布:2023-04-22

    本文主要介绍了Java转换流(InputStreamReader/OutputStreamWriter)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • JavaScript DOM插入更新删除的基本操作

    发布:2020-02-12

    这篇文章主要为大家详细介绍了JavaScript之DOM插入更新删除,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Java基于注解的Excel导出方式

    发布:2023-03-02

    这篇文章主要介绍了Java基于注解的Excel导出方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • java ThreadLocal实例用法

    发布:2020-08-03

    这篇文章主要为大家详细介绍了java ThreadLocal的使用案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • java中死锁问题的实例

    发布:2021-05-06

    这篇文章主要介绍了java 中死锁问题的实例详解的相关资料,希望通过本文大家能够理解掌握死锁的问题,需要的朋友可以参考下


  • javaSystem.out.println()输出byte[]、char[]异常的解决办法

    发布:2020-06-17

    这篇文章主要给大家介绍了关于javaSystem.out.println()输出byte[]、char[]异常问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面


  • Java简单实现约瑟夫环算法示例

    Java简单实现约瑟夫环算法示例

    发布:2023-01-06

    给大家整理了关于Java的教程,这篇文章主要介绍了Java简单实现约瑟夫环算法,简单描述了约瑟夫环问题,并结合实例形式分析了Java实现约瑟夫环的具体操作技巧,需要的朋友可以参考下


网友讨论