Java中基本数据类型byte,short,char,int,long,float,double

部分内容转自:java 彻底理解 byte char short int float long double

首先说byte:

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

 1 /**
 2      * A constant holding the minimum value a <code>byte</code> can
 3      * have, -2<sup>7</sup>.
 4      */
 5     public static final byte   MIN_VALUE = -128;
 6
 7     /**
 8      * A constant holding the maximum value a <code>byte</code> can
 9      * have, 2<sup>7</sup>-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:

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
     * <code>char</code>, <code>‘/u0000‘</code>.
     *
     * @since   1.0.2
     */
    public static final char   MIN_VALUE = ‘/u0000‘;

    /**
     * The constant value of this field is the largest value of type
     * <code>char</code>, <code>‘/uFFFF‘</code>.
     *
     * @since   1.0.2
     */
    public static final char   MAX_VALUE = ‘/uffff‘;

Long:

float作为32位的浮点型:

摘自Float.java源码:

/**
     * A constant holding the largest positive finite value of type
     * <code>float</code>, (2-2<sup>-23</sup>)·2<sup>127</sup>.
     * It is equal to the hexadecimal floating-point literal
     * <code>0x1.fffffeP+127f</code> and also equal to
     * <code>Float.intBitsToFloat(0x7f7fffff)</code>.
     */
    public static final float MAX_VALUE = 3.4028235e+38f; // 0x1.fffffeP+127f

    /**
     * A constant holding the smallest positive nonzero value of type
     * <code>float</code>, 2<sup>-149</sup>. It is equal to the
     * hexadecimal floating-point literal <code>0x0.000002P-126f</code>
     * and also equal to <code>Float.intBitsToFloat(0x1)</code>.
     */
    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 type
 3      * <code>double</code>,
 4      * (2-2<sup>-52</sup>)·2<sup>1023</sup>.  It is equal to
 5      * the hexadecimal floating-point literal
 6      * <code>0x1.fffffffffffffP+1023</code> and also equal to
 7      * <code>Double.longBitsToDouble(0x7fefffffffffffffL)</code>.
 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 type
13      * <code>double</code>, 2<sup>-1074</sup>. It is equal to the
14      * hexadecimal floating-point literal
15      * <code>0x0.0000000000001P-1022</code> and also equal to
16      * <code>Double.longBitsToDouble(0x1L)</code>.
17      */
18     public static final double MIN_VALUE = 4.9e-324; // 0x0.0000000000001P-1022
时间: 2024-10-07 23:10:17

Java中基本数据类型byte,short,char,int,long,float,double的相关文章

java对byte,short,char,int,long运算时自动类型转化情况说明

大家都知道,在进行运算时,java会隐式的自动进行类型转化,那么有哪些情况会进行转化呢?总结如下: 一.算术运算符 单目运算符:+(取正)-(取负) ++(自增1) --(自减1) 1.1 +(取正)-(取负) 当操作数是byte,short,char时,会自动转化为int类型:返回结果为int. 当操作数是int,long时,不转化,原来是啥类型,还是啥类型. 1.2 ++(自增1) --(自减1) 不管操作数是啥类型,不转化. 双目运算符:+ - * / %(取余) 1.3 + - * /

关于Java中byte,short,char,int 之间相互赋值的问题

首先明确这几种数据类的取值范围: byte:  -128~127 short: -2^15~2^15-1 char: 0~65536 int: -2^31~2^31-1 请看以下代码: byte b = 100; short s = b; //正确,因为byte的取值范围在short取值范围之内. char c = b; //错误,因为byte的取值范围不完全在char的取值范围内. c = s;  //错误,因为short的取值范围不完全在char的取值范围内. int x = b; //正确

java中基本数据类型数据转化成byte[]数组存储

java中基本数据类型数据转化成byte[]数组存储 1 package com.wocqz.test; 2 3 public class testByte { 4 5 /** 6 * int 转成byte数组 7 * */ 8 public static byte[] int_byte(int id){ 9 //int是32位 4个字节 创建length为4的byte数组 10 byte[] arr=new byte[4]; 11 12 arr[0]=(byte)((id>>0*8)&

java中的数据类型和运算符的总结归类。

首先学习java肯定先要了解java的发展史,以及java的特点,常见的dos命令,jdk的安装,如何开发java程序等等一下概念行的东西,这里面我都不一一说了. 今天这一章主要想总结一下java中的数据类型和运算符2大方面. 再说数据类型之前先说一下标识符的命名规则: 总的命名规则:见名知意.如果有多个单词组成,首单词小写,其余单词的首字母大写(驼峰命名法).1.首字母只能是字母,下划线和$2.其余字母可以字母,下划线,$和数字3.不能使用预留关键字4.严格区分大小写(总体来说和c语音一样)

JAVA中的数据类型——西科软件实训中心

Java数据类型简介: Java是一种强类型的语言,数值类型主要分为基本数据类型和引用数据类型,其中基本的数据类型分为8种,具体细节点及一些注意点如下. java中的基本数据类型: 字符类型: 关键字:char  所占字节:2字节细节点:1.java中的字符类型采用Unicode编码,加之2字节,因此java中的数据类型可以直接存储一个汉字,例如:char sex = "男";注意点:1.声明字符类型时用的是单引号'',而不是双引号"". 布尔类型: 关键字:boo

细谈JAVA中的数据类型

Java数据类型简介: Java是一种强类型的语言,数值类型主要分为基本数据类型和引用数据类型,其中基本的数据类型分为8种,具体细节点及一些注意点如下. java中的基本数据类型: 字符类型: 关键字:char  所占字节:2字节细节点:1.java中的字符类型采用Unicode编码,加之2字节,因此java中的数据类型可以直接存储一个汉字,例如:char sex = '男';注意点:1.声明字符类型时用的是单引号' ',而不是双引号""; 2.其实在正常开发中,绝大多数汉字所占的字节

Java中基本数据类型和包装类

参考:深入剖析Java中的装箱和拆箱; Java中基本数据类型和包装类互转中 缓冲机制的使用; java学习笔记:装箱和拆箱,包装器和缓冲池 Java 各 类型数据在内存中分配情况详解 一 java内存分配 这里只是在网上找的一些资料; Java 中的数据类型分为 1. 基本类型(原始数据类型) byte short int long float double char boolean 基本类型的变量持有原始值. 2. 符合数据类型(引用类型),引用类型持有引用值(即对某个对象的引用,而非对象本

java中基本数据类型与对象引用类型的默认初始化值学习

import org.junit.Test; public class TestInit {     boolean boo;     char cha;     byte by;     short shor;     int in;     float flo;     long lon;     double dou;     String str;     @Test     public void aa() {         System.err.println("boolean:&

JAVA 中基本数据类型及引用数据类型

一.基本数据类型: byte:8 位 (bit),即 1 个字节,最大存储数据量是 255,存放的数据范围是 - 128~127 之间.默认值 0 short: 16 位,即 2 个字节,取值范围 - 32768~32717,默认值 0 int:32 位,即 4 个字节,取值范围 - 2147483648~2147483647,默认值 0 long: 64 位,即 8 个字节 - 2^63~2^63-1,默认值 0L float: 浮点型,在内存中占 32 位,即 4 个字节,用于存储带小数点的