java 彻底理解 byte char short int float long double (转)-agan007-javaeye技术网站
2011年03月01日
遇到过很多关于 数值类型范围的问题了,在这做一个总结,我们可以从多方面理解不同数值类型的所能表示的数值范围
在这里我们只谈论 java中的数值类型
首先说byte:
这段是摘自jdk中 Byte.java中的源代码:
view plaincopy to clipboardprint?
01./**
02. * A constant holding the minimum value a byte can
03. * have, -27.
04. */
05. public static final byte MIN_VALUE = -128;
06.
07. /**
08. * A constant holding the maximum value a byte can
09. * have, 27-1.
10. */
11. public static final byte MAX_VALUE = 127;
/**
* A constant holding the minimum value a byte can
* have, -27.
*/
public static final byte MIN_VALUE = -128;
/**
* A constant holding the maximum value a byte can
* have, 27-1.
*/
public static final byte MAX_VALUE = 127;
从这里可以看出 byte的取值范围:-128 --- 127;
从计算机组成原理的角度可以解释:byte在计算机中是占8位的 而且byte 是有符号整形 用二进制表示时候最高位为符号位 0代表正数 1代表负数。
最大值:127 0111 1111 即2的7次方减去1;
最小值:-128 这个数字曾经困扰我很久, 要知道正数在计算机中是以原码形式存在的,负数在计算机中是以其补码形式存在的,那么一个负数的补码是怎么计算的呢? 就是负数的绝对值的原码转为二进制再按位取反后加1,
下边这个10和-10为例来介绍的 :10原码:0000 1010 它在计算机中的存储就是 0000 1010, 那么-10呢? 按照前面说的 算除其绝对值为10,转为二进制 0000 1010 按位取反 1111 0101 再加1后:1111 0110,此为-10补码 ,好的,计算机中的1111 0110就是代表-10了。
我们来看 -128 绝对值128的二进制表示:1000 0000 按位取反 0111 1111 加1后:1000 0000,也就是说 -128在计算机中的表示就是 1000 0000 了, 再来看一下-129 在计算机中的表示,绝对值129的范围已经超出了了byte的位数。
再有还可以通过
view plaincopy to clipboardprint?
01.System.out.println(Byte.MAX_VALUE); //最大值
02. System.out.println(Byte.MIN_VALUE); //最小值
System.out.println(Byte.MAX_VALUE); //最大值
System.out.println(Byte.MIN_VALUE); //最小值
输出Byte的最大值和最小值。
综上所述 byte的取值范围只能是:-128 -- 127了 即 负的2的7次方到2的7次方减去1。
相应的 short 作为16位有符号整形,int作为32位有符号整形, long 作为64位有符号整形 都可以如上计算出 取值范围
char作为16位无符号整形 其范围为 0 -- 2的15次方 这无可争议
摘自 Character.java中的源代码:
view plaincopy to clipboardprint?
01./**
02. * The constant value of this field is the smallest value of type
03. * char, '\u0000'.
04. *
05. * @since 1.0.2
06. */
07. public static final char MIN_VALUE = '\u0000';
08.
09. /**
10. * The constant value of this field is the largest value of type
11. * char, '\uFFFF'.
12. *
13. * @since 1.0.2
14. */
15. public static final char MAX_VALUE = '\uffff';
/**
* The constant value of this field is the smallest value of type
* char, '\u0000'.
*
* @since 1.0.2
*/
public static final char MIN_VALUE = '\u0000';
/**
* The constant value of this field is the largest value of type
* char, '\uFFFF'.
*
* @since 1.0.2
*/
public static final char MAX_VALUE = '\uffff';
float作为32位的浮点型:
摘自Float.java源码:
view plaincopy to clipboardprint?
01./**
02. * A constant holding the largest positive finite value of type
03. * float, (2-2-23)??2127.
04. * It is equal to the hexadecimal floating-point literal
05. * 0x1.fffffeP+127f and also equal to
06. * Float.intBitsToFloat(0x7f7fffff).
07. */
08. public static final float MAX_VALUE = 3.4028235e+38f; // 0x1.fffffeP+127f
09.
10. /**
11. * A constant holding the smallest positive nonzero value of type
12. * float, 2-149. It is equal to the
13. * hexadecimal floating-point literal 0x0.000002P-126f
14. * and also equal to Float.intBitsToFloat(0x1).
15. */
16. public static final float MIN_VALUE = 1.4e-45f; // 0x0.000002P-126f
/**
* A constant holding the largest positive finite value of type
* float, (2-2-23)??2127.
* It is equal to the hexadecimal floating-point literal
* 0x1.fffffeP+127f and also equal to
* Float.intBitsToFloat(0x7f7fffff).
*/
public static final float MAX_VALUE = 3.4028235e+38f; // 0x1.fffffeP+127f
/**
* A constant holding the smallest positive nonzero value of type
* float, 2-149. It is equal to the
* hexadecimal floating-point literal 0x0.000002P-126f
* and also equal to Float.intBitsToFloat(0x1).
*/
public static final float MIN_VALUE = 1.4e-45f; // 0x0.000002P-126f
double 作为64为浮点型
Double.java源码:
view plaincopy to clipboardprint?
01./**
02. * A constant holding the largest positive finite value of type
03. * double,
04. * (2-2-52)??21023. It is equal to
05. * the hexadecimal floating-point literal
06. * 0x1.fffffffffffffP+1023 and also equal to
07. * Double.longBitsToDouble(0x7fefffffffffffffL).
08. */
09. public static final double MAX_VALUE = 1.7976931348623157e+308; // 0x1.fffffffffffffP+1023
10.
11. /**
12. * A constant holding the smallest positive nonzero value of type
13. * double, 2-1074. It is equal to the
14. * hexadecimal floating-point literal
15. * 0x0.0000000000001P-1022 and also equal to
16. * Double.longBitsToDouble(0x1L).
17. */
18. public static final double MIN_VALUE = 4.9e-324; // 0x0.0000000000001P-1022
发表评论
-
Flex style - CSS 的使用
2012-01-20 01:20 608Flex style - CSS 的使用 2011年01月1 ... -
Flex 开发框架汇总
2012-01-20 01:20 357Flex 开发框架汇总 2010 ... -
flex之旅(三)
2012-01-20 01:20 614flex之旅(三) 2010年11月09 ... -
Flex 4 新体验
2012-01-20 01:20 604Flex 4 新体验 2010年06月27日 直到最近才 ... -
Adobe Flex UIComponent LifeCycle
2012-01-20 01:20 666Adobe Flex UIComponent LifeCycl ... -
C# 路径,文件,目录,IO常见问题汇总 - wxbjs - 博客园
2012-01-19 09:09 688C# 路径,文件,目录,IO常 ... -
java.io 类 ObjectInputStream
2012-01-19 09:09 713java.io 类 ObjectInputStream 20 ... -
as3面试题
2012-01-19 09:09 654as3面试题 2011年09月13日 ... -
硬盘知识大全(含主板、BIOS)
2012-01-19 09:09 599硬盘知识大全(含主板、 ... -
了解学习
2012-01-19 09:09 376了解学习 2011年06月30日 前言 石头说数据同步很 ... -
android 各系统区别(android 1.5- android 3.0)
2012-01-17 01:38 758android 各系统区别(android ... -
[转]进程间通信(一)
2012-01-17 01:38 802[转]进程间通信(一) 2010 ... -
关于hibernate的缓存使用
2012-01-17 01:38 564关于hibernate的缓存使用 2011年09月21日 ... -
mmap的详细使用及函数参数意义
2012-01-17 01:38 2666mmap的详细使用及函数参数意义 2011年07月03日 ... -
越南旅游攻略??转载
2012-01-15 20:48 702越南旅游攻略??转载 201 ... -
世界各国驻中国大使馆名录(全)
2012-01-15 20:48 984世界各国驻中国大使馆名录(全) 2009年10月07日 ... -
越南旅游
2012-01-15 20:48 661越南旅游 2010年02月13日 北部 下龙湾(世界 ... -
2010年第八届中国机械(越南)展览会
2012-01-15 20:48 5182010年第八届中国机械(越南)展览会 2009年11月05 ... -
越南旅游1
2012-01-15 20:47 603越南旅游1 2009年12月04 ... -
jsoup 1.5.1 发布,超棒的HTML解析器
2012-01-11 12:26 576jsoup 1.5.1 发布,超棒的HTML解析器 2011 ...
相关推荐
Jsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mhtJsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mht
Java面试经典试题及答案- SpringArt - JavaEye技术网站
MyEclipse快捷键与插件大全 - 入门技术 - New - JavaEye(1)
Flex学习笔记_09 数据绑定_概念、使用 - Java&Flex - JavaEye技术网站 希望对爱好有帮助!!
让想成为一个顶级程序员,学会调试异常是必不可少的。Eclipse调试常用技巧 -为你解决java程序中的出现的异常。
JDOM处理XML快速上手 - Web UI Design - JavaEye技术网站.mht
JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mhtJSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht
JavaEye+技术架构,讲述java框架的应用
使用 Eclipse 平台进行调试 - Java - JavaEye论坛
JavaEye博文JavaEye博文JavaEye博文JavaEye博文JavaEye博文
Struts+spring+hibernate学习笔记! - Struts原理与实践
虽然只能算一个Demo,但是用到了很多Java基础技术和算法: Java2D,双缓冲,A星寻路,粒子系统,动画效果,处理图片,Swing ui ,UDP,TCP/Socket. 另外这个程序也可以看出jre1.5和jre1.6之前的性能差别。(jre1.5下面...
java socket和多线程(Thread)实例 - JAVA SSH AJAX JS CSS - JavaEye技术网站
史上最全的android和java面试文档集。包括有: java程序员面试宝典.txt Java面试宝典2011版-1C,Java基础部分.doc... Java面试题及答案(基础题122道) - 在梦想与现实之间徘徊 - JavaEye技术网站.mht 等等,还有好多。
JavaEye论坛热点_-_2008年11月_-_总第6期
JavaEye新闻月刊_-_2009年3月_-_总第13期.
javaeye Robbin 论缓存技术方面的东西
javaeye被黑 大家看看
1. JVM调优 1.1 JVM调优总结(一)-一些概念 1.2 JVM调优总结(二)-一些概念 1.3 JVM调优总结(三)-基本垃圾回收算法 1.4 JVM调优总结(四)-垃圾回收面临的问题 1.5 JVM调优总结(五)-分代垃圾...4.3 深入理解JVM