JAVA数据类型
java的标识符的命名规则
做到"见名知意"
只有由
1)26个字母(区分大小写)
2)0~9的数字
3)$(美元符号)
4)_(下划线)
组成
注意事项
1)不能数字打头
2)不能使用关键字
3)严格区分大小写
java的数据类型
java是一种强类型语言,必须先定义后使用
数据类型
基本数据类型
整数型 字节数 取值范围
字节型 byte 1 2^7-1 ~ -2^7
短整型 short 2 2^15-1 ~ -2^15
整型 int 4 2^31-1 ~ -2^31
长整型 long 8 2^63-1 ~ -2^63
浮点型
单精度浮点型 float 4
双精度浮点型 double 8
字符型 char 2 0 ~65536
布尔型 boolean 1 只有true和false
引用数据类型
类
数组
接口
定义long类型变量,变量值必须有L(大小写都可以)
定义float类型变量,变量值必须有F(大小写都可以)
byte a = 100;
short b = 200;
int c = 300;
long d = 400L;
float w1 = 10.12132L;
double w2 = 231.128131;
比较时最好避免使用浮点数,使用java提供BigDecimal
浮点数 有限 舍入 离散 接近但不等于
进制转换
进制
二进制 "逢二进一" 用0b表示
八进制 "逢八进一" 用0表示
十进制 "逢十进一"
十六进制 "逢十六进一" 用0x表示
8421码
除基取余法
计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
二进制表示法,最高位为符号位;"0"表示正数,"1"表示负数。
正数的原反补一样
负数的原码 最高位为1
反码 除符号位外全部取反
补码 在反码的基础末尾+1
例如:已知某数X的原码为10110100B,试求X的补码和反码。
0B代表二进制
反码 1100101
补码 1100110
类型转换
范围小 范围大
byte,short,char --->int ---> long --->float --->double
byte,short,char参与运算,先转换成int类型
强制类型转换(隐式类型转换):将范围大的类型转换范围小的类型
自动类型转换(显示类型转换):将范围小的类型转换范围大的类型
注意事项:
1)不能对布尔类型进行转换
2)不能将对象类型转换成不相干类型
3)强制转换,可能存在内存溢出和精度问题
数据类型常见的面试题
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果
没有可以赋值。
b=b1+b2不可以,是因为b1和b2是变量,因为变量的值会变化,不确定具体的值,所以默认使用
int类型进行存储。
面试题
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
有问题,byte取值范围为 127 ~ -128 会溢出,需要强转
byte b = (byte)130;
"计算底层运算通过补码来进行的"
最高位符号位
补码: 1 0000010
反码: 1 0000001
原码: 1 1111110
结果为 -(2^6+2^5+2^4+2^3+2^2+2^1+0)= -126;
标签:类型转换,JAVA,java,补码,数据类型,反码,byte
来源: https://blog.csdn.net/qq_44808059/article/details/114752849