逻辑运算符
Day05 base Day09
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: "+(b&&a));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果就为true
System.out.println("!(a && b):"+!(a&&b));//如果是真,则为假,如果为假则为真,
字符串中+号是连接符
得出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tt1CfBZ5-1613472882196)(I:\Java图片\逻辑 位运算符\1.PNG)]
a && b:逻辑与变量:两个运算符都为真,结果才为true(真)
a || b:逻辑或变量:两个变量一个为真,则结果为true(真)
!(a&&b):如果为真,则为假,如果为假则为真
短路运算
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LCnnFBEn-1613472882200)(I:\Java图片\逻辑 位运算符\2.PNG)]
在逻辑与变量中,两个运算符都必须是真的,结果才能是true
如果第一个是假的,那么他就不会计算后面的了,我们称为短路运算
举个例子,就像图中的代码
c = 5 ;
d (c<4)&&(c++<4);
c小于4是错误的
运算一下就会得出
false和5
如果运行了c++<4的话 那么c就应该等于6而不是5
很明显,计算第一个为假的时候,就不会计算第二个
位运算符
Day05 base Day10
/*
* A = 0011 1100
* B = 0000 1101
*
* ----------------------------
* A&B = 0000 1100 2个为1才为1,否则都为0
* A|B = 0011 1101 2个为0才为0,否则都为1
* A^B = 0011 0001 相同则为0,否则都为1
* ~B = 1111 0010 与A相反,0为1 1为0
左移,右移
* 2*8 = 16 2
* 效率高!!!
* <<(左移) *2
*
* >>(右移) /2
*
*
* 0000 0000 0
* 0000 0001 1
* 0000 0010 2
* 0000 0011 3
* 0000 0100 4
* 0000 1000 8
* 0001 0000 16
*
System.out.println(2<<3);
左移<< 就是将数字往左移动一位
0000—0000移动一位就是 0000—0010
0000—0010在往左移动一位就是0000—0100
以此推类
System.out.println(2<<3);
就是0000_0010向左移动3位 就是0001_0000
就是等于16了
扩展赋值运算符
Day11
int a = 10;
int b = 20;
int c = 20;
a+=b; //a=a+b
c-=b; //a=a+b
System.out.println(a);
System.out.println(c);
a+=b;其实就是a=a+b 就是省略了一小部分
字符串
int a = 10;
int b = 20;
int c = 20;
a+=b; //a=a+b
c-=b; //a=a+b
System.out.println(a);
System.out.println(c);
//字符串连接符 + , String
System.out.println(""+a+b);
//字符串在前面,会拼接,字符串在后面,前面依旧进行运算
System.out.println(a+b+"");
(""+a+b)的得数为3020
(a+b+"")的得数为50
字符串在前面,后面会进行拼接,字符串在后面,前面的依旧运算
三元运算符
//三元运算符
//x ? y: z
//如果x==true 则结果为y, 否则结果为z
int score = 80;
String type = score <60 ?"不及格":"及格";//必须掌握
//if
System.out.println(type);
三元运算如果这个数达到条件则结果为Y,否则为z
意思是 这个数score = 80
那么String type = score <60
这个数如果小于60 那么结果为?"不及格“
如果大于60.那么结果为:“及格“