day03
1.算术运算符
算术运算符的运算遵循四则运算规律
先算小括号
再算乘除
最后算加减
-
加号的用法
-
+ 号的几种作用
- 1.加法运算
- 2.表示正数
- 3.字符串连接
-
代码演示:
-
class HelloWorld { public static void main(String[] arge){ System.out.println("hello world"); int a = 10; int b = 3; //int c = a + b; a = a + b; //System.out.println(a + b); System.out.println(a); String s = "hello"; String s1 = "world"; System.out.println(s +"~"+ s1); int c = 30; String s2 = "="; int d = 10; int f = 20; //30 = 10 + 20; System.out.println(c+" "+s2+" "+d+" + "+f+";");//30=1020 } }
-
-
-
减号的用法
- - 号的几种作用
- 1.减法运算
- 2.表示负数
- - 号的几种作用
-
乘号的用法
-
***的作用
- 乘法运算
代码演示:
class HelloWorld { public static void main(String[] arge){ // - * / int a = 10; int b = 3; a = a - b; System.out.println(-a); System.out.println((float)(a * b)); System.out.println(a * b * 1.0); } }
-
-
除法的用法
-
*/*的作用
- 除法运算
-
代码演示:
-
class HelloWorld { public static void main(String[] arge){ // - * / int a = 10; int b = 3; int c = a / b; System.out.println(c);//3.333333333 System.out.println(a / b); System.out.println(a * 1.0 / b); System.out.println(a / b * 1.0); } }
-
-
-
什么是取余
-
*%*这个符号就是取余数
- 两个整数相除,肯定有余数,这个运算符就是为了求出余数
-
代码演示:
-
class HelloWorld { public static void main(String[] arge){ // % 模与运算 取余运算 //求出两个整数相除之后的余数 int a = 10; int b = 3; System.out.println(a % b); } }
-
-
-
自增
- *++*这个符号是个自增符号
- 自增是指在本身的数据基础上加1;
- *++*这个符号是个自增符号
-
自减
-
*–*这个符号是个自减符号
- 自减是指在本身的数据基础上减1;
-
class HelloWorld { public static void main(String[] arge){ // ++:自增运算符 --:自减运算符 int a = 10; //当++单独使用的时候,前++和后++没有区别,都能使数据本身自增1 ++a; System.out.println(a); //但是当++一旦参与运算,那么前++和后++就有了区别 //前++ ++a:参与运算时 先自增 然后再去参与运算 //后++ a++:参与运算时 先运算 然后再去自增 // 小括号也算运算符 //int b = 3; //int c = 5; //int d = c + b++; //System.out.println(d); //System.out.println(b); int b = 3; int c = 5; int d = c + ++b; System.out.println(d); System.out.println(b); } }
-
-
*/和%*的区别
- 一个是除数运算
- 一个数取余数运算
-
++和–的一些注意事项
- 单独使用时
- 参与运算时:
- 需要注意的是:小括号也算是运算的一部分
-
练习题:
-
//1:基本小题目 int a = 10; int b = 10; int c = 10; a = b++; c = --a; b = ++a; a = c--; //请分别计算出a,b,c的值 //2:比较复杂的题目 int a = 4; int b = (a++)+(++a)+(a*10);
-
2.赋值运算符 **
-
= , += ,-=, *= , /=, %= 这些都是赋值运算符
-
其中=是基本的赋值运算符 其他都为扩展的赋值运算符
-
+= 运算符:是将左右两边的值进行相加然后赋值给左边
-
练习题:
-
int a,b; a = b = 10; System.out.println(a); System.out.println(b); int a = 10; a += 20; System.out.println(a);
-
-
面试题:
-
short s=1; s = s+1; short s=1; s+=1; //这几行代码会不会有问题,如果有问题,是哪里出现的问题 //使用+=符号可以避免类型的强转
-
3.关系运算符 ***
比较运算符的结果都是boolean类型,也就是说,要不是true,要不是false
- ==:判断左右两边是否相等
- 注意事项:千万不能写成 = ,他们两个没有任何联系
- != :判断左右两边是否不相等
- 如果左右两边相同,返回false
- 如果左右两边不同,返回true
- <或者<= :判断左边是否小于等于右边
- 如果左边小于右边,那么返回值为true
- 如果左边大于右边,那么返回值为false
- > 或者>=:判断左边是否大于等于右边
- 如果左边大于右边,那么返回值为true
- 如果左边小于右边,那么返回值为false
- instanceof :检查是否是该类的一个实例
class HelloWorld {
public static void main(String[] arge){
//== != < <= > >=
int a = 3;
int b = 5;
// 判断a和b是否相等,如果相等 返回true 如果不等 返回false
boolean bo = (a == b);//false
//判断a和b是否不等 如果不等 返回true 如果相等 返回false
boolean b1 = (a != b);//true
//小于 小于等于
boolean b2 = (a <= b);//true
//大于 大于等于
boolean b3 = (a >= b);//false
System.out.println(bo);
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
//instanceof 判断你是否是我的一个实例
String s = "hello";
System.out.println(s instanceof String);//true
System.out.println(a instanceof String);//false
}
}
-
练习题:
class HelloWorld { public static void main(String[] arge){ int a = 5; int b = 3; //1:注意2的时候举例 System.out.println(a==b);//false System.out.println(a=b);//3 //2:赋值的时候要注意类型问题 int x = 10; int y = 10; boolean flag = (x == y);//true //boolean flag1 = (x = y);//会报错 System.out.println(flag); boolean b1 = true; boolean b2 = false; boolean b3 = (b1 == b2);//false boolean b4 = (b1 = b2);//false System.out.println(b3); System.out.println(b4); } }
4.逻辑运算符 ***
-
&:与符号(and)
-
两边都是true,结果才为true,只要&两边出现一个false,那么结果就位false
class HelloWorld { public static void main(String[] arge){ //逻辑运算符的书写格式: 表达式1 & 表达式2 System.out.println(true & true);//true System.out.println(true & false);//false System.out.println(false & true);//false System.out.println(false & false);//false int a = 10; int b = 5; int c = 6; System.out.println(a > c & c > b);//true & true System.out.println(a > c & c < b);//true & false System.out.println(a < c & c < b);//false & false System.out.println(a < c & c > b);//false & true } }
-
-
| :或符号(or)
-
两边都是false,结果才是false,两天只要有一个为true,那么结果就是true
class HelloWorld { public static void main(String[] arge){ //逻辑运算符的书写格式: 表达式1 | 表达式2 System.out.println(true | true);//true System.out.println(true | false);//true System.out.println(false | true);//true System.out.println(false | false);//false int a = 10; int b = 5; int c = 6; System.out.println(a > c | c > b);//true | true System.out.println(a > c | c < b);//true | false System.out.println(a < c | c < b);//false | false System.out.println(a < c | c > b);//false | true } }
-
-
^ :异或符号(xor)
-
^符号 两边boolean值相同的情况下,结果为false
两边boolean值不同的情况下,结果为true
class HelloWorld { public static void main(String[] arge){ //逻辑运算符的书写格式: 表达式1 ^ 表达式2 System.out.println(true ^ true);// false System.out.println(true ^ false);// true System.out.println(false ^ true);// true System.out.println(false ^ false);// false int a = 10; int b = 5; int c = 6; System.out.println(a > c ^ c > b);//true ^ true false System.out.println(a > c ^ c < b);//true ^ false true System.out.println(a < c ^ c < b);//false ^ false false System.out.println(a < c ^ c > b);//false ^ true true } }
-
-
! :非符号(not)
-
!true表示false
-
!false表示true
class HelloWorld { public static void main(String[] arge){ // ! 就是not意思 相反 System.out.println(!true); System.out.println(!false); } }
-
-
&& :双与或者叫做短路与(and)
- 两边都是true,结果才为true
-
|| :双或或者叫做短路或(or)
- 两边都为false,结果才为false
class HelloWorld { public static void main(String[] arge){ //&&:短路与 ||:短路或 //& | //&:只有两边都为true 结果才为true 只要有一边为false,结果就是false //&&:只要&&左边的表达式结果为false,那么右边的表达式就不再参与运算 System.out.println(true && true);//true System.out.println(true && false);//false System.out.println(false && true);//false System.out.println(false && false);//fasle //||:只要||左边的表达式结果为true,那么右边的表达式就不再参与运算 System.out.println(true || true);//true System.out.println(true || false);//true System.out.println(false || true);//true System.out.println(false || false);//fasle } }
逻辑运算符的左右两边一般情况下都是布尔类型的表达式
-
注意事项:
- 在java中不支持 3>x >1这种写法,这种写法java是不能解析的
- 所以针对上面情况,我们应该将表达式修改为3 > x && x > 1,
-
&和&&的区别:
-
|和||的区别:
-
//&&,||和&以及|的区别 //结果相同,但是有短路效果,一般建议使用&&,|| int x = 3;int y =4; System.out.println((x++ > 3) & (y++ > 4)); System.out.println(x); System.out.println(y); System.out.println((x++ > 3) && (y++ > 4)); System.out.println(x); System.out.println(y); System.out.println((++x > 3) | (++y > 4)); System.out.println(x); System.out.println(y); System.out.println((++x > 3) || (++y > 4)); System.out.println(x); System.out.println(y);
-
5.位运算符
-
>>:右移符号
- 将值转为二进制以后,开始移位
- 如果高位为0,那么移位以后的空位也补0
- 如果高位为1,那么移位以后的空位补1
- 将值转为二进制以后,开始移位
-
<<:左移符号
- 将值转为二进制以后,开始左移,空位补0
-
>>>:无符号右移
- 将值转为二进制以后,开始移位,不管高位是0还是1,都补0
总结:向右移几位,就是除以2的几次方
向左移几位,就是乘以2的几次方