`
lwx522
  • 浏览: 35965 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java中数据溢出处理

    博客分类:
  • java
 
阅读更多

java中8中基本数据类型,每种数据类型都有不同容量。当大容量数据类型向小容量数据类型进行强制类型转换时可能出现数据溢出。首先先总结一下,java中基本数据类型所在内存大小和能表示的数据范围。

 

基本类型 位数 范围 默认值
byte(字节)   8 -128 至 127 0
shot(短整型) 16 -32768 至 32767 0
int(整型) 32 -2147483648至2147483647 0
long(长整型) 64 -2^63至2^63-1 0L或0l
boolean 1 0,1或true,false false
char 8 \u0000至\uffff \u0000
flaot      
double      

 

每种基本数据类型在java中都有相应的包装类,其中记录相对应基本数据类型的最大值和最小值,并提供了一些方便数据类型转换的接口。

 

 当数据类型进行强制类型转换时,超出了数据表示范围就会出现数据溢出。比如:

        int i = 703;
        byte b = (byte)i;
        System.out.println(b);

打印结果为-65  。之前没有研究过,自以为猜测打印结果应该是127.

正确的解析过程应该是,222二进制表示应该是1010111111(由于i是int32位,所以前面应该很多个0凑集32位),但是byte只有8位容量,最终b=10111111(最左边的两位10被截取了)。 10111111直接转换成十进制是191,并不是-65  .那这个65  又是怎么得到的呢?

计算机的最高为是符号位,0表示正数,1表示负数。当为负数时,转换成十进制需要遵循这样一个规则。

1、首先按位取反,最高位符号位不需要转,10111111->11000000

2、再加1.  为11000001

3、最高位1表示-,1000001转换为十进制为65.所以最终结果为-65

 

所以当int类型向short、byte类型强制类型转换时出现一些莫名其妙的值时,都可以运用以上的规则进行解析。

 

分享到:
评论

相关推荐

    java poi 导入大数据量Excel数据 防止内存溢出处理.zip

    然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿加载到内存中。为了防止这种问题,我们需要采用优化策略来高效地处理大量数据。 1. **分块读取*...

    java解决大批量数据导出Excel产生内存溢出的方案

    在Java开发中,当面临大批量数据导出到Excel文件时,可能会遇到内存溢出的问题。这是因为Excel文件格式本身的设计,以及Java默认处理大数据的方式,可能导致内存占用过高,尤其是在一次性加载大量数据到内存中进行...

    java csv大数据量导出(千万级别,不会内存溢出)

    在Java开发中,处理大数据量的数据导出是一个常见的挑战,特别是在CSV格式的文件处理上。CSV(Comma Separated Values)是一种广泛使用的数据交换格式,因其简单性和通用性而受到青睐。然而,当数据量达到千万级别时...

    JAVA内存溢出问题总结

    在处理大数据时,应该使用 Stream 的方式,而不是把数据读入到内存中,以免内存溢出。 5、把某个对象放到了一个 Set/List/Map 里面,用完了没有尽快释放。 在使用集合时,应该及时释放资源,以免内存溢出。 6、...

    完美解决java读取excel内存溢出问题.rar

    在Java开发中,处理大型Excel文件时,可能会遇到内存溢出的问题。这通常是由于Java的默认内存设置不足以处理大量数据导致的。本解决方案主要针对使用Apache POI库进行Excel读取时遇到的这类问题。 首先,Apache POI...

    java处理海量数据的初步解决思路

    在Java编程中,处理海量数据是一项挑战,但通过合理的策略和工具可以有效地解决。这篇文章将探讨如何使用Java来处理大规模数据,主要关注于优化内存管理、分片处理、流式处理以及利用开源工具等方法。 首先,理解...

    java一次性查询处理几百万数据解决方法

    - 为防止内存溢出,可以设置每次处理的数据量上限,并将处理结果定期写入文件或其他持久化存储中。 4. **资源管理**: - 在操作完成后及时释放资源,包括关闭`ResultSet`、`Statement`和`Connection`等对象。 ##...

    java excel导出tomcat内存溢出处理方法

    ### Java Excel导出Tomcat内存溢出处理方法 在Java应用开发过程中,特别是在进行大量数据处理如Excel导出等操作时,经常会遇到Tomcat服务器内存溢出的问题。内存溢出是指程序运行时申请的内存超过了系统能提供的...

    kettle内存溢出(Java heap space)以及解决方法.docx

    然而,在处理大量数据时,Kettle可能会遇到内存管理问题,导致Java堆空间溢出错误。这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java...

    java实现csv导出千万级数据实例

    本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...

    JAVA内存溢出详解.doc

    总之,Java内存溢出是复杂的问题,需要结合程序设计、JVM参数配置、垃圾收集机制和内存分析工具等多个方面进行综合分析和处理。理解这些概念并熟练运用,能有效防止和解决Java应用程序中的内存问题。

    Java 内存溢出解决办法

    Java内存溢出问题通常指的是程序在试图分配内存时,无法找到足够的连续内存空间而抛出的异常。在Java中,内存分为几个区域:堆(Heap)、栈(Stack)、方法区(Method Area,Java 8后被元空间取代)以及程序计数器和...

    java导出30万数据量的excel(采用生成多个excel,最后打包zip)

    在Java开发中,处理大数据量的Excel导出是一项常见的任务,尤其当数据量达到数十万条时,单个Excel文件可能会遇到性能瓶颈或格式限制。本项目针对这一问题提出了一种解决方案,即分块生成多个Excel文件,然后将它们...

    java IBM websphere 内存溢出 javacore deapdump CPU内存分析工具

    Java IBM WebSphere应用服务器在运行过程中可能会遇到各种性能问题,其中最常见的挑战之一是内存溢出。内存溢出是指应用程序消耗的内存超过了系统所能提供的限制,导致程序崩溃或性能急剧下降。在这种情况下,开发者...

    解决Java程序内存溢出的办法

    在Java编程中,内存溢出(Out of Memory Error,简称OOM)是一个常见的问题,它发生在程序请求的内存超过了系统能够分配的最大额度。这种情况通常会导致程序崩溃,因此理解如何解决Java程序的内存溢出至关重要。以下...

    java内存溢出原因

    Java内存溢出(Out Of Memory, OOM)是开发者在编程过程中经常遇到的问题,尤其是在处理大量数据或长时间运行的应用程序时。本篇文章将详细解析三种常见的Java内存溢出类型:JVM PermGen space溢出、JVM heap space...

    Java中易于溢出的比较Overflow-proneomparisonsnava)1

    总之,溢出问题在Java中是需要特别注意的,特别是在处理整数类型的边界条件时。通过编写和应用CodeQL查询,我们可以系统性地检测和预防这类错误,确保代码的正确性和安全性。对于更复杂的情况,如涉及浮点数、自定义...

    Java数据溢出代码详解

    Java数据溢出代码详解 Java是一门相对安全的语言,但是在数据溢出时,它是如何处理的呢?Java数据溢出代码详解主要介绍了Java数据溢出的相关内容,包括具体代码示例,分析比较详细,希望对大家有所帮助。 在Java中...

Global site tag (gtag.js) - Google Analytics