数据类型
-
Java是强类型的语言,要求变量的使用严格符合规定,所有变都必须先定义后才能使用。
-
【本篇可能因见识的不足留有一些错误,留待未来修改】
数据类型的两大类
一、基本类型(primitive type)
1、数值类型
(1)整数类型
-
byte 占1个字节范围:-128-127
-
short 占2个字节范围
-
int 占4个字节范围
-
(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亿的范围,那么结果会出现循环。

因为在本次运算的过程中,是先相乘,然后再类型转换。所以哪怕前面的类型是long,在输出后也是循环后的结果。
正确的方法是可以在运算出乘积之前先将int转化为long


浙公网安备 33010602011771号