前缀:
0b/0B 二进制
进制之间的转换
• 正十进制转换为二进制的方式
a.除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将
余数逆序排序。
b.拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面
写1,否则写0。
• 正二进制转换为十进制的方式
a.加权法,使用二进制中的每个数字乘以当前位的权重再累加起来。
• 负十进制转换为二进制的方式
a.先将十进制的绝对值转换为二进制,然后进行按位取反再加1。
• 负数的需要补码:按位取反,再加1 : -45,正数45为00101101,按位取反得到11010010再加1,即11010011 验证:00101101+11010011(竖式加)= 100000000 (进制问题导致高位溢出,即最高位的1被丢弃)
• 负二进制转换为十进制的方式
a.先减1再按位取反,合并为十进制整数后添加负号。
单个字节表示的整数范围(重要)
计算机中单个字节表示八位二进制位,最左边代表符号位,0:非负数,1:负数
非负数范围:00000000~011111111,即0~127(2^7-1)
负数范围:10000000~11111111,(先减一得,01111111~11111110;按位取反得,10000000~00000001,转为十进制加负号)即-1~-128
总:单个字节表示整数的范围为-128~127
整数类型
byte类型占1个字节,范围是-2^7~2^7-1
short类型占2个字节,范围是-2^15~2^15-1
int类型占4个字节,范围是-2^31~2^31-1(最常用)
long类型占8个字节,范围是-2^63~2^63-1
public class A{
public static void main(String[] args) {
int i1 = 250;
//直接写出的整数(直接量/字面值/常量)通常默认类型为int,如果将250赋值给byte类型变量,由于byte范围小,会报错:可能有损失;
//若复制给short变量,范围足够,不会报错;
//同样,定义int类型变量时,如果赋值太大也会报错,这是由于数值本身超出了int的范围但是却被默认为int类型;解决方式为在数据自身后加L(表示Long类型),同时改为定义Long变量;
//更大的数据类型可使用java.math.BigInteger类型;
System.out.println("i1 = "+i1);
}
}
笔试考点
.标识符命名:字母、下划线、$等组成,不能用数字开头因为可能会与88888888L这种直接量混淆
·找错误:
i2是一个变量,具体代表的值是不确定的
浮点类型
用于描述小数数据的类型,float 和 double(推荐)
float类型占据4个字节,叫单精度浮点数,表示7位有效数字,范围:-3.403E38~3.403E38
double类型占据8个字节,叫双精度浮点数,表示15位有效数字,范围:-1.798E308~1.798E308
public class doubleText {
public static void main(String[] args) {
double f1 = 3.1415926;
//直接写出的小数数据默认为double类型;
//要定义float类型变量,赋值是在数字后加f,如 float f2 = 3.1415926f,但是由于范围限制,这样打印出的数字末位出现偏差;
System.out.println("f1 = "+f1)
}
}
笔试考点
System.out.println(0.1+0.2);//说明float 和double 类型进行运算会出现误差,实现精确运算,借助
java.math.BigDecimal类型
布尔类型
用于描述真假的信息类型 boolean,数值只有 true和 false
所占内存空间大小没有明确规定,认为是1个字节