ASCII编码表
'a' -> 97
'A' -> 65
'0' -> 48
![ASCII编码表](https://www.icode9.com/i/ll/?i=41670e3f96174f618c43bb1e21088904.jpg?,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Zac6b6Z55qE5bCP5Y2a56uZ,size_14,color_FFFFFF,t_70,g_se,x_16)
运算符
算术运算符?
+:
在Java中+号的含义:
1.加减乘除的加
2.正负的正
3.连接符
什么时候+号是作为连接符的呢?
任意数据类型的数据与字符串相连接的时候,那个+号就是连接符
-:
*:
/:
整数除以整数得到的还是整数
举例子:
int i = 5;
int j = 2;
int a = i / j;
System.out.println(a);//2
%:模,取余
举例子:
int i = 2;
int j = 3;
System.out.println(i % j);
int a = 4;
int b = 2;
System.out.println(a % b);
++:
单独使用:
int i = 1;
//i++; // i = i + 1
++i;
System.out.println(i);//2
不管++在前还是在后,结果都是一样
参与运算:
++在前:先自身加1,然后再参与运算
int i = 1;
int j = ++i;
System.out.println(j);//2
System.out.println(i);//2
++在后:先参与运算,然后再自身加1
int i = 1;
int j = i++;
System.out.println(j);//1
System.out.println(i);//2
面试题:
byte b1 = 1;
b1 = b1 + 1;
System.out.println(b1);//编译报错
byte b1 = 1;
b1++; //b1 = (byte)(b1 + 1)
System.out.println(b1);//正确,因为++里面自带强制类型转换
--:
单独使用:
int i = 2;
//i--; // i = i - 1
--i;
System.out.println(i);//1
不管--在前还是在后,结果都是一样
参与运算:
--在前:先自身减1,然后再参与运算
int i = 2;
int j = --i;
System.out.println(j);//1
System.out.println(i);//1
--在后:先参与运算,然后再自身减1
int i = 2;
int j = i--;
System.out.println(j);//2
System.out.println(i);//1
练习题:
int i = 10;
int j = i++ + ++i + i-- + --i;
System.out.println(j); //44
赋值运算符?
=:
int i = 1;
+=:
int i = 1;
i += 2;
System.out.println(i);
-=
*=
/=
%=
注意:都自带了强制类型转换
关系运算符?
关系运算符得出来的结果一定是boolean类型的数据,也就是说要么是true,要么是false
>
<
>=
<=
!=
==:比较两边的数据是否相等
int i = 1;
int j = 2;
System.out.println(i == j);//false
==和=的区别?
=是赋值
==是比较
逻辑运算符?(左右两边的数据的数据类型都是boolean类型,结果都是boolean类型)
&(单与):
System.out.println(true & true);//true
System.out.println(true & false);//false
System.out.println(false & false);//false
System.out.println(false & true);//false
结论:两边只要有一个是false,结果就为false
|(单或):
System.out.println(true | true); //true
System.out.println(true | false); //true
System.out.println(false | false); //false
System.out.println(false | true); //true
结论:两边只要有一个是true,结果就为true
^(异或):
System.out.println(true ^ true); //false
System.out.println(true ^ false); //true
System.out.println(false ^ false); //false
System.out.println(false ^ true); //true
结论:两边相同为false,两边不同为true
!(非):
System.out.println(!true); //false
System.out.println(!false); //true
System.out.println(!!true); //true
System.out.println(!!!true); //false
&&(双与):
System.out.println(true && true);//true
System.out.println(true && false);//false
System.out.println(false && false);//false
System.out.println(false && true);//false
结论:两边只要有一个是false,结果就为false
||(双或):
System.out.println(true || true); //true
System.out.println(true || false); //true
System.out.println(false || false); //false
System.out.println(false || true); //true
结论:两边只要有一个是true,结果就为true
面试题?
&和&&的区别?
&&:如果左边为false,右边就不再执行了,结果就为false
&:如果左边为false,右边依然会执行,结果就为false
|和||的区别?
||:如果左边为true,右边就不再执行了,结果就为true
|:如果左边为true,右边依然会执行,结果就为true
推荐使用&&和||,提高了执行效率
位运算符?(两边的数据都是数字,结果也为数字)
&(与位运算):
System.out.println(3 & 2); //2
|(或位运算):
System.out.println(3 | 2); //3
^(异或位运算):
System.out.println(3 ^ 2); //1
练习?
int i = 1;
int j = 2;
通过某些方式,实现i和j变量的数据的调换?
方式一:
int temp = i;
i = j;
j = temp;
方式二:
i = i ^ j;
j = i ^ j;
i = i ^ j;
~(按位取反):
>>(右移位运算):
<<(左移位运算):
>>>(无符号右移):