进制之间的转换
(1)正十进制转换为二进制的方式
a.除二取余法,让十进制整数不断地除以2取出余数,直到商为0时将余数逆序排列。
b.拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重则下面写1否则写0。
如:
45 = 32 + 8 + 4 + 1
128 64 32 16 8 4 2 1
0 0 1 0 1 1 0 1 => 0010 1101
(2)正二进制转换为十进制的方式
a.加权法,让二进制的每个数字乘以当前位的权重,然后再累加起来。
如:
0010 1101 => 0*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
=> 0 + 0 + 32 + 0 + 8 + 4 + 0 + 1
=> 45
(3)负十进制转换二进制的方式
a.先将十进制的绝对值转换为二进制,然后进行按位取反再加1.
如:
-45 => 将绝对值转为二进制:0010 1101
=> 进行按位取反: 1101 0010
=> 再加1: 1101 0011
-45 + 45 = 0
-45:1101 0011
45:0010 1101 +
-------------------------
1 0000 0000 (假设只能存储8位二进制,此时最高位1会被丢弃,溢出)
(4)负二进制转换为十进制的方式
a.先减1再按位取反,然后转换为十进制整数后添加负号.
如:
1101 0011 => 先减1: 1101 0010
=> 按位取反: 0010 1101
=> 转为十进制:45
=> 添加负号: -45
整数类型
在Java语言中用于描述整数数据的类型有:byte、short、int、long,推荐使用int类型。
其中byte类型在内存空间中占1个字节的大小,表示范围是:-128 ~ 127.
-2^7 ~ 2^7-1.
其中short类型在内存空间中占2个字节的大小,表示范围是:-32768 ~ 32767.
-2^15 ~ 2^15-1.
其中int类型在内存空间中占4个字节的大小,表示范围是: 正负二十一亿之间。
-2^31 ~ 2^31-1.
其中long类型在内存空间中占8个字节的大小,表示范围是:比int类型还大的数.
-2^63 ~ 2^63-1.
在Java程序中若出现直接写出的整数数据叫做 直接量/字面值/常量,
如:66,直接量默认为int类型,若希望表达更大的直接量则需要在直接量的后面加l或者L,来表示long类型的直接量,推荐使用L。
分支结构
1 if分支结构
if(条件表达式){
语句块;
}
2 if-else分支结构
if(条件表达式){
语句块1;
}
else{
语句块2;
}
3 if-else if-else分支结构
if(条件表达式1){
语句块1;
}
else if(条件表达式2){
语句块2;
}
...
else{
语句块n;
}
4 switch-case分支结构
switch(变量/表达式){
case 字面值1: 语句块1; break;
case 字面值2: 语句块2; break;
...
default:语句块n;
}
循环结构
1 for循环
for(初始化表达式; 条件表达式; 修改初始值表达式){
循环体;
}
2 while循环
while(条件表达式){
循环体;
}
3 do-while循环
do{
循环体;
}while(条件表达式);
数组
数组的声明
数据类型[] 数组名称 = new 数据类型[数组的长度]; - 动态方式
如:
int[] arr = new int[3]; - 声明一个长度为3元素类型为int类型的一维数组;
int num = 3; - 声明一个初始值为3元素类型为int类型的变量;
int arr[] = new int[3]; - 不推荐使用
注意:
只有声明数组时[]中的数字才代表数组的长度,否则一律代表下标;
元素的初始化
数据类型[] 数组名称 = {初始值1, 初始值2, ...}; - 静态方式
# java
# 语法