基本数据类型

  工作中无时无刻不在用着各种中数据类型,可每次总结的时候,还是含糊不清的,不知道是大脑有问题,还是没认真记住。

一、  基本数据类型主要两类

    数值型:整数型(byte,short,long,int,),字符型(char),,浮点型(float,double)。

    boolean类型:true false

           内存大小:1byte = 8bit  范围 (-2)7 到 2 7-1

                         short = 2byte = 16bit 范围 (-2)15 到 2 15-1

                         long = 8 byte = 64bit 范围 (-2)63 到 2 63-1

                         int = 4 byte = 32bit  范围 (-2)31 到 2 31-1

                         char = 2 byte = 16bit

                         float = 4 byte = 32bit

                         double = 8 byte = 64bit

                          boolean = 1 byte = 8bit

         注意:定义一个巨大的整数时,java不会自动将int转化为long,需要在数值后加L。

      例如: long value= 999999999999999999999//错误

                           long value= 999999999999999999999L //正确

二、 整数的表示方法:二进制,八进制,十进制,十六进制

            注:八进制以0开头,十六进制一ox或者0X开头

三、  java 7 新增二进制整数。

          当定义32为整数时,最高位是符号位。当为1是表示负数,0 表示正数,其中负数以补码的形式存在,因此还需要转换成原码。

四、 十进制 二进制转换方法

        十进制转二进制:十进制数依次除以2 取余(1/0)

       例:十进制 15

              a. 15/2= 7 余 1

              b. 7/2 = 3 余 1

              c. 3/2 = 1 余 1

            所以:十进制 15 = 二进制 1111

        二进制转十进制:位值*2n-1+位值*2n-2+位值*20

         例:二进制1111转十进制

              1*20+1*21+1*22+1*23=15

五、 计算机存储数字的方式

       所有数字以二进制的在计算机存在。原码是直接将一个数值换算成二进制数,但计算机以补码的形式保存所有整数。

补码的计算规则:整数的补码=原码,负数的补码 = 反码+1

  注:反码 是对原码按位取反,但最高位(符号位)不变。

      例:1、int 15

           15 的二进制 =  10000000000000000000000000001111

            原码: 00000000000000000000000000001111 因为int为32为,当转为二进制不足32位,左边补0。

            反码:01111111111111111111111111110000

    补码:00000000000000000000000000001111

            2、int -15

            原码: 10000000000000000000000000001111 因为为负数,所以最高位为1

            反码:11111111111111111111111111110000

    补码:反码+1 -> 11111111111111111111111111110000+1=11111111111111111111111111110001

六、基本类型转换

  1.自动类型转换

          定义:系统把某种基本类型的值直接赋给另一种类型的变量

          当把一个类型数值范围小的数值或者变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换。

         例如:两瓶水,当把小瓶的水倒入大瓶内时,不会出现问题。

         char-》int-》-》long-》float-》double

    byte-》short-》int-》-》long-》float-》double

       例如: int a=8;

                byte b = 9;

                double = 9.3;

             b=a;//错误  a=b;//正确

             a = b;//错误  b=a;//正确

    2.强制类型转换

      强制类型转换和自动类型转换相反,是将表数范围大的类型转成表数范围小的类型,但这样会造成数据溢出,数据丢失。

     就像两个瓶,大瓶子盛满水向小瓶子倒入,会溢出。

     例如:int 233 转为 byte类型变为 -23  

int 233 转为二进制 000000000000000000000000011101001

int(32位) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1
byte(8位) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1

 byte 类型的只取8位:11101001,这是补码,他的反码= 补码-1=11101000  原码= 10010111 = 十进制-23

            

    

              

      

原文地址:https://www.cnblogs.com/liuxiuhao/p/3394686.html