以编程方式访问Java基本类型的大小

许多不熟悉Java的开发人员首先要了解的一件事是Java的基本原始数据类型 ,其固定(与平台无关)的大小(以位或字节为单位用二进制补码表示 )以及它们的范围(Java中所有数字类型都是带符号的) )。 有很多不错的在线资源列出了这些特性,其中一些资源是有关原始数据类型的Java教程课程, Java的 八种数据类型 , Java的原始数据类型和Java基本数据类型。

Java允许人们以编程方式访问基本Java基本数据类型的这些特征。 Java中大多数原始数据类型的最大值和最小值已通过相应的引用类型的MAX_VALUEMIN_VALUE字段提供了一段时间。 J2SE 5为大多数类型引入了一个SIZE字段,该字段以位为单位提供每个类型的大小(二进制补码)。 JDK 8现在为大多数此类提供了一个称为BYTES的新字段,该字段以字节为单位显示类型的大小(二进制补码)。

DataTypeSizes.java

package dustin.examples.jdk8;import static java.lang.System.out;
import java.lang.reflect.Field;/*** Demonstrate JDK 8's easy programmatic access to size of basic Java datatypes.* * @author Dustin*/
public class DataTypeSizes
{/*** Print values of certain fields (assumed to be constant) for provided class.* The fields that are printed are SIZE, BYTES, MIN_VALUE, and MAX_VALUE.* * @param clazz Class which may have static fields SIZE, BYTES, MIN_VALUE,*    and/or MAX_VALUE whose values will be written to standard output.*/private static void printDataTypeDetails(final Class clazz){out.println("\nDatatype (Class): " + clazz.getCanonicalName() + ":");final Field[] fields = clazz.getDeclaredFields();for (final Field field : fields){final String fieldName = field.getName();try  {switch (fieldName){case "SIZE" :  // generally introduced with 1.5 (twos complement)out.println("\tSize (in bits):  " + field.get(null));break;case "BYTES" : // generally introduced with 1.8 (twos complement)out.println("\tSize (in bytes): " + field.get(null));break;case "MIN_VALUE" :out.println("\tMinimum Value:   " + field.get(null));break;case "MAX_VALUE" :out.println("\tMaximum Value:   " + field.get(null));break;default :break;}}catch (IllegalAccessException illegalAccess){out.println("ERROR: Unable to reflect on field " + fieldName);}}}/*** Demonstrate JDK 8's ability to easily programmatically access the size of* basic Java data types.* * @param arguments Command-line arguments: none expected.*/public static void main(final String[] arguments){printDataTypeDetails(Byte.class);printDataTypeDetails(Short.class);printDataTypeDetails(Integer.class);printDataTypeDetails(Long.class);printDataTypeDetails(Float.class);printDataTypeDetails(Double.class);printDataTypeDetails(Character.class);printDataTypeDetails(Boolean.class);}
}

执行后,以上代码将以下结果写入标准输出。

输出

Datatype (Class): java.lang.Byte:Minimum Value:   -128Maximum Value:   127Size (in bits):  8Size (in bytes): 1Datatype (Class): java.lang.Short:Minimum Value:   -32768Maximum Value:   32767Size (in bits):  16Size (in bytes): 2Datatype (Class): java.lang.Integer:Minimum Value:   -2147483648Maximum Value:   2147483647Size (in bits):  32Size (in bytes): 4Datatype (Class): java.lang.Long:Minimum Value:   -9223372036854775808Maximum Value:   9223372036854775807Size (in bits):  64Size (in bytes): 8Datatype (Class): java.lang.Float:Maximum Value:   3.4028235E38Minimum Value:   1.4E-45Size (in bits):  32Size (in bytes): 4Datatype (Class): java.lang.Double:Maximum Value:   1.7976931348623157E308Minimum Value:   4.9E-324Size (in bits):  64Size (in bytes): 8Datatype (Class): java.lang.Character:Minimum Value:

更新:请注意,正如Attila-Mihaly Balazs在下面的注释中指出的那样,上面显示的java.lang.Floatjava.lang.DoubleMIN_VALUE值不是负数,即使这些常量值对ByteShortIntLong 。 对于FloatDouble的浮点类型 , MIN_VALUE常量表示可以存储在这些类型中的最小绝对值 。

尽管Java原始数据类型的特性可以随时在线获得,但是很高兴能够在需要时轻松地以编程方式访问这些细节。 我想用字节来考虑类型的大小,而JDK 8现在提供了查看以字节为单位直接测量这些大小的能力。

翻译自: https://www.javacodegeeks.com/2014/04/programmatic-access-to-sizes-of-java-primitive-types.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle用EXPLAIN PLAN 分析SQL语句

EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称. 你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果…

创建型模式:原型模式

个人公众号原文:创建型模式:原型模式 五大创建型模式之五:原型模式。 简介 姓名 :原型模式 英文名 :Prototype Pattern 价值观 :效率第一 个人介绍 : Specify the kinds of objects to create u…

我的前端工具集(五)提示工具之模态窗提示

我的前端工具集(五)提示工具之模态窗提示 liuyuhang原创,未经允许禁止转载 目录 我的前端工具集 1、需求 很多页面操作都需要提示,比如操作成功,操作失败之类。 总不能没事就console.log或者alert吧。 所以一个操作提…

min-width:100%和max-width:100%的区别

1.width:100%和width:auto width:100%,设定对象的宽度占父元素的100%不论设定元素的margin值是多少,不包含margin; width:auto,根据设定对象的实际大小而自适应宽度,考虑设定元素的Margin值得大小,包含Margin 2.max-width:100%和m…

Java 8 Friday:可选将保留为Java中的一个选项

在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五,我们都会向您展示一些不错的教程风格的Java 8新功能&#…

java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...

在开发网站时候我们会遇到下面问题?- 在引用网页中引用js和css或者动态的Servlet的时候我们是写绝对路径还是相对路径?- 如果写相对路径吧,上线偶尔会报404,还要手动去拼接绝对路径- 如果写绝对路径吧,你在本地写的时候…

新增数据库栏位脚本

IF NOT EXISTS(SELECT * FROM SYSCOLUMNSWHERE IDOBJECT_ID(NMNDIndicator) AND NAMENcheckperiod)BEGINALTER TABLE MNDIndicator ADD checkperiod NVARCHAR(100) NULL default END 转载于:https://www.cnblogs.com/snowball/archive/2007/05/14/745213.html

七天开发记录(3)

今天在网上找到了一个开发记账本微信小程序的网址 我看了一下这个APP的源代码,其用分为两个大包。 转载于:https://www.cnblogs.com/zjl-0217/p/10428525.html

做个商城吧(〇)

做个商城吧(〇) liuyuhang原创,未经允许进制转载! 作为自己想写的一个系列,应该仔细认真的更下来 目录在文末 1、想法 自己一个人做个商城,这种想法一直萦绕着。 但是也有不同的声音: 有淘宝&am…

链表!比数组更适合做增删操作的数据结构

什么是链表? 链表和数组的对比:在大多数语言中,数组的大小是固定的,从数组的起点或中间添加或删除元素的成本很高,因为需要移动元素。链表中的每一个元素在内存中不是连续放置的,和它左右两侧元素是没有关系…

Java 8中的Base64 –加入乐趣为时不晚

最后,Java 8发布了。 最后,有一种执行Base64编码的标准方法。 长期以来,我们一直依赖于Apache Commons Codec(无论如何还是很棒的)。 内存敏感的编码人员将拼命使用sun.misc.BASE64Encoder和sun.misc.BASE64Decoder&am…

多层架构模型中的BLL 与 Model的解释

理想状态这两个可以合并到一起来,就是业务对象,但model是把这个业务对象中的数据提取了出来,作为一个数据载体,可以在层间传递。业务对象中除去这些数据剩下的方法就构成了BLL层。显示层Presentation Layer业务逻辑层Business Log…

java创建方法并引用_java – 创建非捕获方法引用,它将调用超类方法

我正在尝试重构以下代码&#xff1a;class Base {private Object a, b, <...>; // theres like 10 of these attributes of different typepublic Object a() {return a;}public Object b() {return b;}// more getters like the ones above}class RootNode extends Base…

maven快速入门

一。前提条件 你的电脑必须安装maven和java 二。检验安装 执行命令&#xff1a;mvn --version 输出&#xff1a; Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T20:41:4702:00) Maven home: D:\apache-maven-3.6.0\bin\.. Java version: 1.8.0_16…

如何使用JSR107缓存注释

最近&#xff0c;我对JSR107缓存注释以及JSR107的实现是否提供它们有一些疑问。 可以将缓存注释添加到Java类中&#xff0c;并将其作为方法调用缓存操作。 例如&#xff0c;下面是带注释的BlogManager。 CacheDefaults(cacheName "blgMngr") public class BlogMan…

js之作用域

1.什么是作用域 作用域是用于收集存储维护变量&#xff0c;以及当前执行代码声明的变量所拥有的权限&#xff0c; 例如 &#xff1a; function foo(a){ console.log(a); -------- 1 }; foo(666); console.log(a); ------- 2 此时执行该段代码 1 -- 处打印我们得…

TMS320F28335——IO控制/定时计操作

一、实现GPIO控制 1.硬件连接 从电路原理图上看来&#xff0c;LED灯是接在GPIO34 上的。 2.IO设置 2.1设置功能 GPXMUX1/2&#xff1a;功能选择寄存器   GPXMUX1/2 每组 IO 一般有 32 个 IO 口可以配置。GPXMUX1 对应每组的低 16 个 IO 口&#xff0c;GPXMUX2 对应高 16 个…

网页弹出窗口代码【来源于网络】

网页弹出窗口代码 1、最基本的弹出窗口代码 其实代码非常简单&#xff1a; < SCRIPT LANGUAGE"java script"> < !-- window.open ("page.html") --> < /SCRIPT> 因为这是一段java script代码&#xff0c;所以它们应该放在< SCRIPT L…

比Python、Java更快的 Go 语言,能否称霸江湖?

关注之后加星标&#xff0c;江湖要事早知道 ​ 文章来源&#xff1a;jb51.net 有一种语言堪称比语言排行榜前五热门选手的Python、Java更快&#xff0c;它就是GO语言。 Go于2009年11月正式宣布推出&#xff0c;成为开放源代码项目&#xff0c;并在Linux及Mac OS X平台上进行了实…

嗨,您好 。 。 ! 您如何评价Java / Java EE技能?

要知道&#xff0c;就是要知道你一无所知。 那就是真正知识的含义。 苏格拉底 这篇文章旨在为读者提供Java生态系统及其技术堆栈的快速概述。 老实说&#xff0c;从Java EE 7&#xff0c;Java SE 8到Java Embedded 8…&#xff0c;Java平台进行了许多革命性的更改和添加。 哇…