数据类型

数据类型

  • Java是强类型的语言,要求变量的使用严格符合规定,所有变都必须先定义后才能使用。

  • 【本篇可能因见识的不足留有一些错误,留待未来修改】

 

数据类型的两大类

一、基本类型(primitive type)

1、数值类型

(1)整数类型

  • byte 占1个字节范围:-128-127

  • short 占2个字节范围

  • int 占4个字节范围

  • long 占8个字节范围(后加L)

(2)浮点类型(小数)

  • float 占4个字节(后加F)

  • double 占8个字节

(3 )字符类型

  • char 占两个字节

2、boolean类型

占1位,值只有true和false两个

备注

long类型,float类型

 

进制转换

常用的数字系统有十进制(Decimal)、二进制(Binary)、八进制(Octal)、十六进制(Hexadecimal)。

1、二进制、十六进制、八进制转换十进制

  • 例如1011_{(2)}转换为10进制就是1*2^3+0*2^2+1*2^1+1*2^0=11

  • 例如1C_{(16)}转换为10进制就是1*16^1+12*16^0=11

  • 八进制同理

2、十进制转换二进制、十六进制、八进制

  • 例如十进制11转换为二进制 就是

    2 |____11___ ^

    2 |____5___ 1 |

2 |__2___ 1 |

2 |__1_____ 0 |

|__2_____ 1 |

  • 除数倒取余,所以结果为1011_{(2)}

3、二进制转十六进制

  • 例如11010101110_{(2)}转十六进制,从有向左数4位为1组,即:

0110 1010 1110

每组的四位分别对应8、4、2、1,即:

0110 1010 1110

8421 8421 8421

其中,1110对应相应十六进制的个位,1010对应十位,0110对应百位

1110对应8421中的8、4、2,所以十六进制的“个位”是8+4+2=14,也就是E。

1010对应8421中的8、2、1,所以十六进制的“十位”是8+2+1=11,也就是C。

0110对应8421中的4、2、1,所以十六进制的“百位”是4+2+1=7.

所以11010101110_{(2)}的十六进制是EC7_{(16)}

 

类型转换

  • Java是强类型语言,所以当要进行某些运算的时候需要用到强制类型转换。而在数值类型的转换当中,当有用到高位向低位转换的时候,才会用到强制转换。

  • 例如:将float向int转换。由高位转换为低。

假设float a = 1000F

目前我发现有两种方式,一种是在下面再做一个变量做转换,一种是在输出的位置转换。

(1)先做变量再转换:

 

(2)在输出的位置转换:

(3)输出

 

(4)而当低位向高位转换的时候则不需要再前面加上相应的符号。

 

  • 而事实上,字符的本质也是数字。每一个字母都有相应的编码与之一一对应。

比如:char g=‘a’

转换为数值后输出为

 

  • 计算的溢出

int占4个字节,大概取值是正负21亿。

假设多个int下的多位数相互运算,得出的结果超出了int正负21亿的范围,那么结果会出现循环。

34096ac2af40839036277819ebbf0a5.png

因为在本次运算的过程中,是先相乘,然后再类型转换。所以哪怕前面的类型是long,在输出后也是循环后的结果。

正确的方法是可以在运算出乘积之前先将int转化为long

8d44932b032d7d9d5877fd01590386e.png

 

 

posted @ 2021-10-13 16:58  我tm是星河大帝  阅读(549)  评论(0)    收藏  举报