Java基本数据类型 

        java共有八种基本数据类型,可分为四类:

           整型:byte   short   int   long

           浮点型:float   double

           布尔型:boolean

           字符型:char

        java的强数据类型本质上就是在内存上开辟的不同内存空间。

java中int数字除了几次 java中int数据类型占多少位_数据类型

数据类型的字节长度和取值范围

                        

java中int数字除了几次 java中int数据类型占多少位_java_02

        字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。一个字节存储8位无符号数,即1Byte(字节)=8bit(位),储存的数值范围为0-255。

若写成int a=10.0 是否可以运行?

        不能运行。

        如下图所示,是int类型和float类型的二进制占位情况。可以看出int类型有符号位占1位,数字位占31位,float类型的符号位占1位,另需要8位存放指数,数字位占23位。int和float的占位情况不同,所以当int类型的a被赋值浮点数10.0时,不能够运行。

          

java中int数字除了几次 java中int数据类型占多少位_数据类型_03

为何byte类型的b=127+1,输出为(-128)?

        有如下代码,输出结果为-128.

public static void main(String[] args){
    byte a=127;
    byte b=(byte)(a+1);
    System.out.println(b);
}

        byte类型的字节长度为1字节,128用二进制的形式表示为1000 0000,其反码和补码如下:

        1000 0000                 原码(1为符号位表示 负)

        1111 1111                  反码

        (1)0000 0000           补码                  

注:负数的补码 是反码的符号位不变  剩下各位取反并末尾位+1 ,因每二进一 所以有九位(溢出)

        在原码里面0000 0000和1 0000 0000都是表示0,这样比较浪费,在补码里面,就把10000 0000当作 -2^7 ,以扩大补码表示范围, 所以 byte b= (byte)128  输出为   -128。

        使用补码,不仅仅修复了0的符号以及存在两个编码的问题,而且还能够多表示一个最低数。这就是为什么8位二进制,使用原码或反码表示的范围为[-127,+127],而使用补码表示的范围为[-128,127]。因为机器使用补码,所以对于编程中常用到的32位int类型,可以表示范围是:[-2^31,2^31-1],因为第一位表示的是符号位,而使用补码表示时又可以多保存一个最小值。

char类型

        char用于C或C++中定义字符型变量,只占一个字节,取值范围为 -128 ~ +127(-2^7~2^7-1)。C语言中如int、long、short等数据类型不指定signed或unsigned时都默认为signed,但char在标准中不指定为signed或unsigned,编译器可以编译为带符号的,也可以编译为不带符号的。

        给char类型的数据赋值字符时,需要用单引号 ‘ ’ 。

public static void main(String[] args){
    char a='中';
    char b='\u4e2d';
    System.out.println(a);
    System.out.println(b);
}

 注:‘4e2d’是‘中’所对应的16位Unicode编码。