数据类型

2020-07-07  本文已影响0人  小疏林er

1. 基本数据类型:(四类八种)

整型:以补码类型表示

byte:一个字节(-128~127,默认值是0)
short:二个字节(-215~215-1,默认值是0)
int:四个字节(-231~231-1,默认值是0)
long:八个字节(-263~263-1,默认值是0L)

浮点型:(Java中所有的小数都是不精准的,约等于,金融等精确方面不适用)

float:四个字节 float a = 0.1f;
double:八个字节 long b = 0.1;

布尔型:boolean (true、false,布尔值不能转其他基本类型)

字符型:('w'和"w"是两种不同的类型)

char: (16 位 Unicode 字符,\u0000~\uffff)

          char a ='w';
          System.out.println(a);  //w
          System.out.println(String.valueOf(a));  //w,但是是字符串类型
          System.out.println(a+"");   //w,但是是字符串类型
          System.out.println((int)a);     //119 ASCII码

注:

  1. java中整型默认int,加L变long int c =11111111111; ---->long c=11111111111L;
  2. 整型默认10进制,0开头代表八进制,0x开头代表十六进制
  3. 小数默认double类型,为了节省空间通常使用float,float a = 0.1f

二进制:

1. 原码:除2取余,逆序排列(从下到上),正数最高位为0,负数为1
2. 反码:正数不变(依然是源码),负数取反(符号位不变)

    缺点:有+0 -0需要判断0000 0000,1111,1111 ;进位溢出问题

3. 补码:正数不变(依然是源码),负数补码+1
      39+(-71)  
      -71原码:1100 0111  
      -71反码:1011 1000  
      -71补码:1011 1001  
      39补码:0010 0111  
      39-71:1011 1001 --->1110 0000 --->1101 1111 --->1010 0000  

考:

存在使i + 1 < i的数吗?
存在, byte 127+1(溢出)


2. 引用数据类型:

引用类型指向一个对象,指向对象的变量是引用变量。类似于C语言当中的指针。

引用数据类型大小为4个字节。

  1. 对象、数组都是引用数据类型。
    数组:int [] a=new int []{1,2,3,4,5};
    对象:Student s1 = new Student();
  2. 所有引用类型的默认值都是null。
  3. 变量一旦声明后,类型就不能被改变了。


    image.png

3. 数据类型转换

  1. 显式转换(datetype)变量
    注意前后大小问题,是否超出转换范围 。
    大转小:实际数据内容是否超出精度,超出后会溢出造成数据丢失 。
    小转大:范围扩大,没什么影响 。

  1. 隐式转换(能不用就不用)
    普通运算时,小转大自动转 byte a + int b 自动int结果也是int(byte,short,char最少转到int)
    所有整数和浮点运算,自动转浮点
byte a =1;
short b =1;
b=b + a;  //报错

  1. 转换示意图
转换示意图
蓝色虚线代表可能造成数据丢失的类型转换。
红色实线代表无数据丢失的自动类型转换。
上一篇 下一篇

猜你喜欢

热点阅读