`
insertyou
  • 浏览: 890299 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据类型 关乎内存占用——已发《电脑报》

阅读更多

求职不怕考

pcw-chendx@vip.sina.com

与编程相关的招聘,都会准备很多考题,一不小心考生就在考题上栽了跟头,特别是没有多少工作经验的应届毕业生,往往回答得过于理论化,很难令考官满意。为此,我们特意推出本系列,通过对真实考题的分析让大家在回答考题时有更多的实用性,让考官满意,顺利找到工作。

数据类型 关乎内存占用

爪哇米工作室 陈跃峰

数据类型是编程的基础,它会影响程序对内存的占用情况,如果数据类型使用的不好,会增加内存占用,反之可以减少内存占用。所以,在招聘考试中,一定会有与数据类型相关的题目。

招聘题目:编写一个方法,求byte类型的绝对值。

答案A

public byte abs(byte b){

if(b >= 0){

return b;

}else{

return –b;

}

}

答案B

public byte abs(byte b){

if(b >= 0){

return b;

}else{

return (byte)–b;

}

}

答案C

public int abs(byte b){

if(b >= 0){

return b;

}else{

return –b;

}

}

题目答案:答案是C

为什么答案是C

答案A有语法错误,对于byte类型的参数b来说,表达式-bint类型,这不符合声明中返回值是byte的约定,所以答案A错了。在Java语法中,对于byteshortchar类型进行算术运算时,运算结果将自动提升为int类型,不要忽视了这点。

答案B有逻辑错误,byte类型的数值区间是[-128,127],由于正数和负数存储格式的不同(原码和补码格式存储),所以在求绝对值时, -128byte类型数值没有对应绝对值,所以答案B错了。

所以,通过这样一个简单的题目,考官就可以考察了应聘者对于数据类型运算时的变化的掌握情况,对应聘者基础知识的扎实程度会有一个直观的认识。

数据类型在几乎所有的实际开发中都会用到,不管是开发软件、还是开发网站程序,用好数据类型,不仅可以使开发者写出的代码比较简洁,也可以在一定程度上提高程序的执行效率,而代码的简洁和执行效率是实际开发过程中最为重要的内容之一

实际应用

数据类型在实际开发中是如何运用的?如何提高执行效率?我们通过一组代码进行说明。在实际的数据存储和网络传输中,底层的数据处理很多是基于byte数组的,如果需要存储或传输一个int类型的数据,容易想到的方法是利用字符串实现来回的转换。

利用字符串转换虽然比较省事,但是无论是在内存使用还是执行效率上都无法令人满意,而int类型是由4byte组成的,利用这个知识可以轻松的实现int类型数值和byte数组之间的互转,提高效率。

代码1

int类型转换为byte数组:

int n = 12345;

byte[] b = new byte[4];

b[0] = (byte)n;

b[1] = (byte)(n >> 8);

b[2] = (byte)(n >> 16);

b[3] = (byte)(n >> 24);

点评该代码结构清晰,执行效率高,在存储时将int类型的4个字节按照从低到高的顺序依次存储到byte数组b中,利用移位和byte类型的强制转换轻松实现int类型中4个字节的分割。

byte数组转换为int类型:

int m = (b[0] & 0xff) | ((b[1] << 8) & 0xff00) |

((b[2] << 16) & 0xff0000) |((b[3] << 24) & 0xff000000);

点评该代码的结构和难度比上面的转换要大一些,按照上面的存储顺序,b[0]存储低八位,所以通过和0xff进行位于运算以后只保留低八位,其他的清零,最后通过位或运算符将4个字节的内容按照位置进行合并。使用这种方式利用底层的位运算符提高了代码的执行效率。

代码2

//int转换为byte数组

int n = 12345;

String s = String.valueOf(n);

byte[] b = s.getBytes();

//byte数组转换为int

String s1 = new String(b1);

int m = Integer.parseInt(s1);

点评:代码2虽然在代码行数上比代码1少,但是无论是在程序的执行效率还是内存使用上都比代码1差了很多,每次转换时都需要生成一个String对象,这样不但浪费了内存,也降低了程序的执行速度。

分享到:
评论

相关推荐

    数据结构与算法分析——Java语言描述

    数据结构与算法分析是计算机科学中的核心领域,它关乎如何高效地存储和处理数据,以及设计和实现解决问题的计算过程。在Java语言中,数据结构和算法的掌握对于开发高效、可靠的软件系统至关重要。 首先,我们要理解...

    Android内核驱动——内存管理

    低内存killer是这个过程的一部分,它根据进程的优先级和内存占用情况选择性地结束进程,以防止系统崩溃。 最后,Android还引入了 ashmem(Android Shared Memory)机制,用于在进程间共享内存。ashmem允许应用程序...

    Java内存占用.pdf

    JVM的内存占用不仅关乎程序的性能,还直接影响到系统的整体资源利用率。例如,过高的内存占用可能导致系统资源紧张,影响其他运行的应用程序。因此,了解和控制Java程序的内存使用是非常重要的。 在不同的操作系统...

    电脑技术文章——硬件篇

    内存(RAM)是电脑运行程序时临时存储数据的地方,其容量大小与电脑运行多个任务的能力密切相关。文章可能会解释如何判断是否需要升级内存,以及DDR3、DDR4等不同代际内存的区别。 硬盘是电脑的主要存储设备,分为...

    数据结构——编程小窍门

    在编程的世界里,数据结构是基础中的基础,它关乎到程序的效率和可维护性。本文将聚焦于“数据结构——编程小窍门”,旨在帮助初学者和有经验的程序员们掌握更多的编程技巧,尤其是针对C和C++这两种强大的编程语言。...

    C51数据类型 单片机C语言知识点

    总的来说,在学习C51语言的过程中,我们需要深入理解并熟练运用其数据类型,这不仅关乎程序的正确性,也直接影响程序的性能和效率。对于初学者而言,理解各种数据类型的大小、用途和适用场景是非常重要的,它能帮助...

    电力行业——发电可靠性分析

    ### 电力行业——发电可靠性分析 #### 发电可靠性管理的重要性 发电可靠性管理是电力行业中一个极为重要的领域,它不仅关乎到发电厂的全面质量管理与全过程安全管理,还是现代科学管理的关键内容之一。通过深入...

    reactenrouteReact路由器拥有很少浏览器内存占用

    描述中提到“React路由器拥有很少浏览器内存占用”,这暗示了React Router在设计时考虑了性能优化。相比于其他可能占用更多资源的解决方案,React Router通过智能地管理组件状态和DOM更新,减少了不必要的计算和内存...

    实用数据结构基础——程序设计

    在编程领域,数据结构是构建高效算法的基础,它关乎如何在计算机内存中组织和存储数据。本主题"实用数据结构基础——程序设计"涵盖了数据结构的基本概念,通过实际的编程项目来加深理解,如航班订票系统和DOS文字RPG...

    数据结构——智走迷宫

    在IT行业中,数据结构是计算机科学的基础之一,它关乎如何高效地存储和处理数据。在这个“数据结构——智走迷宫”的项目中,我们聚焦于使用C语言来实现一个迷宫游戏,这涉及到数据结构、算法以及编程技巧的综合运用...

    168582922489629《关乎天下:中小企业赢取江山的秘诀》.pdf

    168582922489629《关乎天下:中小企业赢取江山的秘诀》.pdf

    数据备份技术——数据仓库

    总的来说,数据备份技术在数据仓库中扮演着核心角色,不仅涉及到数据的安全存储,还关乎企业的决策效率和业务洞察力。理解和掌握相关的源码、工具以及备份策略,对于任何IT专业人员来说,都是提升工作效率和保障业务...

    大数据导论(1)——“大数据”相关概念、5V特征、数据类型.pdf

    总结来说,大数据不仅仅关乎数据的量,还涉及到处理速度、数据类型、数据质量和潜在价值的挖掘。理解并利用好这些特征,企业可以更好地构建数据集,提升决策效率,发现新的商业机会,甚至推动整个行业的创新和发展。...

    统计行业数据分析与数据挖掘应用——工具篇.pdf

    统计数据分析与挖掘技术的有效应用,关乎整个行业能否应对挑战,并延续生命力。随着互联网技术的创新与进步,依托于互联网技术的统计行业面临重大改革,改革同时是一种发展的机遇。因此,探寻一条统计的振兴之路成为...

    从心开始——谈谈技术管理.pdf

    《从心开始——谈谈技术管理》是一篇关于技术管理的深度探讨,主要涉及在互联网行业中,如何有效地管理和领导技术团队,以达成业务目标。本文通过实际案例,详细阐述了技术管理中的关键要素,如结果导向、团队协作...

    __main函数内幕——从加载视图到执行视图.pdf

    执行视图则是程序实际运行时的状态,此时的代码和数据已被调整至其运行时所需的正确位置。这两者之间的差异,尤其是在嵌入式系统中,往往是由于优化存储器访问速度或满足特定硬件需求所致。 **分散加载机制** ...

    教育精品资料消防内业资料——火灾自动报警系统全套施工安装质量资料.doc

    在教育精品资料中,"消防内业资料——火灾自动报警系统全套施工安装质量资料.doc" 提供了详尽的施工过程记录和质量控制文档,旨在确保该系统的安装质量和合规性。 这份资料涵盖了多个关键环节,首先是“火灾自动...

Global site tag (gtag.js) - Google Analytics