目录
1. 笔记
1.1进制
二进制(计算机的世界) 逢二进一 0 1 10 11 100 101 ... 八进制 逢八进一 0 1 2 3 4 5 6 7 10 ... 十进制(现实生活) 逢十进一 0 1 2 3 4 5 6 7 8 9 10 ... 十六进制 逢十六进一 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 ... 十进制-->二进制 十进制数据对2依次做除法运算,要的是余数的倒序,就是该十进制数据的二进制 一个字节是8位(8个0和1组成) byte b=10; // 10通过8个0和1去表示 short s=10; //10 通过16个0和1去表示 int i=10; //10通过32个0和1去表示 10 --> 1010 5 --> 101 26 --> 11010 128 --> 0000 0000 1000 0000 8位存不下,byte -128 ~ 128 -128 --> 1000 0000 特殊的值 最高位为符号位:0正数 1负数 10 --> 0000 1010 -10 --> 1000 1010 最高位本身就是1, 本身负数还有,源码、反码、补码 (不是现阶段所了解) a. 十进制转为二进制,算法需要掌握 b. -128 特殊的值 是 1000 0000 二进制 --> 十进制 10110 --> 22 110 --> 6 1 1 0 1 1 0 1 --> 109 a. 每位系数乘以2^(n-1)相加 128和-128的二进制都是 1000 0000 我有点晕晕的 128 --> 0000 0000 1000 0000 128绝对不是8位,8位存不下 -128 --> 1000 0000 -128,8位是可以存下的 源码反码补码可以研究!
1.2 类型转换
6. 基本数据类型转换(boolean不参与转化并且和String无关) byte -> short -> int ->long -> float -> double char -> int 自动转化(小->大) byte b=10; int i=b;//自动转化 强制转化(大->小) 不建议使用,有风险(数据丢失) int i=10; byte b=i;//有语法错误 正确的语法:较小的数据类型 变量名=(较小的数据类型)大数据类型值; byte b=(byte)i; String和基本数据类型之间的转化,后面讲(String、包装类)
1.3 运算符
1.1 算数运算符 + - * / % ++ -- ① + 加法的加 数学运算 byte short int long float double char 连接符 +两端只要有String出现,那么就是连接符,结果的话就是String ② - 作为负数的标识 减法的减 数学运算 byte short int long float double char ③ * 乘法的乘 数学运算 byte short int long float double char ④ / 整型数据之间的/ 取商数 有浮点型数据参与/ 获得的就是准确的结果(如果除不尽,会自动保留小数) ⑤ % 取模(取余数) ⑥ ++ 自身加1 ⑦ -- 自身减1 语法: 变量名++ 或 ++变量名 变量名-- 或 --变量名 ++放在前面和放在后面,是有先后顺序的,但是如果这行代码只有++,对于结果来说没有影响2. 赋值运算符(了解) = += -= *= /= %= 2.1 = ★ 等号右侧的值赋给左侧的内容(变量) 2.2 += -= *= /= %= 在原变量值的基础上做相应的操作,将结果在赋值给该变量 3. 关系(比较运算符)运算符 比较运算符的结果是一个布尔值(只有两个结果true false) 3.1 > >= < <= 可以进行比较的数据类型有 byte short int long float double char 3.2 == 判断两个值是否相等 任意类型都可以采用==做对比,但是前后类型要兼容 3.3 != 判断两个值是否不相等 任意类型都可以采用!=做对比,但是前后类型要兼容 4. 逻辑运算符 4.1 并且 两个条件都成立总体才成立,否则总体就不成立 ① && 双与(短路与) 会造成短路--> 当第一个条件不成立的时候,总体就已经不成立了,不在判断第二个条件 ② & 单与 第一条件是成立的,第二个也需要判断(需求需要执行) 4.2 或者 两个条件都不成立,总体就不成立,否则总体就是成立 ① || 双或(短路或) --> 当第一个条件成立的时候,总体就已经成立了 ② | 单或 4.3 非 ① ! 取反 4.4 异或(了解) ^ 相同为false,不同为true true ^ true 相同 false ^ false 相同 true ^ false 不同 false ^ true 不同 5. 三元运算符 语法: 条件?值1:值2; 原理:条件成立返回值1,条件不成立返回值2! 6. 位运算符(了解) 和二进制有关 后面会有详细讲解(偏难) 因为我们在学习集合的时候,源码内会有相关的位运算符,能看懂 左移:<< 运算规则:左移几位就相当于乘以2的几次方 右移:>> 运算规则:右移几位就相当于除以2的几次方
2. 练习
2.1 算术运算符练习
练习一:获取一个四位数的个位、十位、百位、千位
public class Test01 {
public static void main (String [] args) {
//1.定义一个四位数,例如1234
int num = 1234;
//2.通过运算操作求出个位,十位,百位,千位
int ge = num % 10; // 1234 / 10 = 123......4
int shi = num / 10 % 10; //1234 / 10 = 123%10
int bai = num / 100 % 10;
int qian = num / 1000 % 10;
System.out.println(num + "这个四位数个位上的数字是:" + ge);
System.out.println(num + "这个四位数十位上的数字是:" + shi);
System.out.println(num + "这个四位数百位上的数字是:" + bai);
System.out.println(num + "这个四位数千位上的数字是:" + qian);
}
}
2.2 赋值运算符练习
练习一:写出每题的输出结果
public class LogicExer1{
public static void main(String[] args){
int x = 1;
int y = 1;
//x==2 ,x++ false x = 2 左边为false
//右边继续
//++y y==2 y=2 y==2成立 右边为true
//false & true 结果false
if(x++==2 & ++y==2){
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=2
}
}
public class LogicExer2{
public static void main(String[] args){
int x = 1,y = 1;
//x==2,x++ 左边条件为false,x=2
//因为短路与,右边不算
//false && ? 结果是false
if(x++==2 && ++y==2){
x =7;
}
System.out.println("x="+x+",y="+y);//x=2,y=1
}
}
public class LogicExer3{
public static void main(String[] args){
int x = 1,y = 1;
//x==1,x++ 左边为true,x=2
//因为是逻辑与,右边继续
//++y, y==1 y=2 右边为false
//条件true | false,最终为true
if(x++==1 | ++y==1){
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=2
}
}
public class LogicExer4{
public static void main(String[] args){
int x = 1,y = 1;
//x==1,x++ 左边为true,x=2
//因为是短路或,左边为true,右边就不看了
//整个条件为true
if(x++==1 || ++y==1){
x =7;
}
System.out.println("x="+x+",y="+y);//x=7,y=1
}
}