java中char类型的取值范围是_Java中基本数据类型byte,short,char,int,long,float,double 取值范围...

首先说byte:

这段是摘自jdk中 Byte.java中的源代码:

1 /**

2 * A constant holding the minimum value a byte can3 * have, -27.4 */

5 public static final byte MIN_VALUE = -128;6

7 /**

8 * A constant holding the maximum value a byte can9 * have, 27-1.10 */

11 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的位数。

再有还可以通过

1 System.out.println(Byte.MAX_VALUE); //最大值

2 System.out.println(Byte.MIN_VALUE); //最小值

输出Byte的最大值和最小值。

综上所述 byte的取值范围只能是:-128 -- 127了  即 负的2的7次方到2的7次方减去1。

相应的 short 作为16位有符号整形,int作为32位有符号整形,  long 作为64位有符号整形 都可以如上计算出 取值范围

Short:

bf719520584286da2044efd76d2f8b07.png

Unicode Character Representations

The char data type (and therefore the value that a Character object encapsulates) are based on the original Unicode specification, which defined characters as fixed-width 16-bit entities. The Unicode Standard has since been changed to allow for characters whose representation requires more than 16 bits. The range of legal code points is now U+0000 to U+10FFFF, known as Unicode scalar value.

Character.java中的源代码:

/*** The constant value of this field is the smallest value of type

* char, '/u0000'.

*

*@since1.0.2*/

public static final char MIN_VALUE = '/u0000';/*** The constant value of this field is the largest value of type

* char, '/uFFFF'.

*

*@since1.0.2*/

public static final char MAX_VALUE = '/uffff';

Long:

950783d9831f481f6d613534c0956210.png

float作为32位的浮点型:

摘自Float.java源码:

/*** 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源码:

1 /**

2 * A constant holding the largest positive finite value of type3 * double,4 * (2-2-52)·21023. It is equal to5 * the hexadecimal floating-point literal6 * 0x1.fffffffffffffP+1023 and also equal to7 * Double.longBitsToDouble(0x7fefffffffffffffL).8 */

9 public static final double MAX_VALUE = 1.7976931348623157e+308; //0x1.fffffffffffffP+1023

10

11 /**

12 * A constant holding the smallest positive nonzero value of type13 * double, 2-1074. It is equal to the14 * hexadecimal floating-point literal15 * 0x0.0000000000001P-1022 and also equal to16 * Double.longBitsToDouble(0x1L).17 */

18 public static final double MIN_VALUE = 4.9e-324; //0x0.0000000000001P-1022

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值