Day130-131
j
运算符:
算术运算符 % 等于取余运算(称为模运算)
Java里的等于是两个等于号(==) 不等于的符号是!=
逻辑运算符:&&=与、||=或、!=非
package Operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算
//Ctrl + D 复制当前行到下一行
int a=10;
int b=20;
int c=25;
int d=25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println((double) a/b);
}
}
package Operator;
public class Demo02 {
public static void main(String[] args) {
double a= 256319848L;
int b= 225;
byte c= 10;
short d= 25;
System.out.println(a+b+c+d);//Long类型
System.out.println(b+c+d);//int类型
System.out.println(c+d);//int类型
System.out.println((double) c+d);
}
}
package Operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果 正确/错误 布尔值
//关系运算符会和if一起大量使用
int a=10;
int b=20;
int c=21;//c/a ...21/10=2……1 余1
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
//取余 模运算
System.out.println(c%a);
}
}
package Operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增 自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增
//a++ a=a+1
System.out.println(a);
int c = ++a;//执行完这行代码前,先自增。再给c赋值
//++a a= a+1
System.out.println(a);
System.out.println(b);
System.out.println(c);
///幂运算 2^3=2*2*2=8 很多运算会使用一些工具类来操作
double pow = Math.pow(3, 2);
System.out.println(pow);
}
}
package Operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or)非(取反)
boolean a = true;
boolean b = false;
/* System.out.println("a&&b:"+(a&&b)); //逻辑与运算 两个和变量都为真,结果才为true
System.out.println("a||b"+(a||b)); //逻辑或运算 两个变量有一个为真,则结果为true
System.out.println("!(a&&b):"+!(a&&b)); //逻辑非运算 如果是真,则变为假,如果是假,则变为真
*/
//System.out.println(a && b); //逻辑与运算 两个和变量都为真,结果才为true
//System.out.println(a || b); //逻辑或运算 两个变量有一个为真,则结果为true
//System.out.println(!(a && b)); //逻辑非运算 如果是真,则变为假,如果是假,则变为真
//短路运算 当c<4时,输出已为false 因此后续结‘c++<4不会再被执行,证明的方法:如果被执行了,那么c的输出因为c++自增的原因,应为6
//双与运行原则:当左侧为false时右侧不参与运算!所以c<4为false,右侧依旧为5
//int c = 5;
//boolean d=(c<4)&&(c++<4);
//System.out.println(d);
//System.out.println(c);
//int c = 5;
//boolean d=(c<4)&&(++c<4);
//System.out.println(d);
//System.out.println(c);
int c = 5;
boolean d=(c<4)||(++c<4);
System.out.println(d);
System.out.println(c);
}
}
package Operator;
public class Demo06 {
public static void main(String[] args) {
/*
A=0011 1100
B=0000 1101
---------------------------------------------------
带入:0=false(假) 1=true(真)
A&B=0000 1100 (与运算,两个之中有一个为0,则输出0,两个都为1,则输出1)
A|B=0011 1101 (或运算,两个之中有一个为1,则输出1,反之为0)
A^B=0011 0001 (异或,两个相同为0,否则为1)
~B=1111 0010 (对B取反,0输出1,1输出0)
2×8=16 2*2*2*2
位运算效率高,原因是直接和底层打交道
<< *2 左移是乘
>> /2 右移是除
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
package Operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; //a=a+b
a -= b;
System.out.println(a);
//字符串连接符 + 在加号运算符两侧只要有任意一侧出现String类型,就会把其他操作数或操作类型转化为String并进行连接
System.out.println(a + b);
System.out.println("" + a + b);
System.out.println( a + b+"" );//这里输出的结果和上面是不一致的,原因是a+b已经先进行了运算等于30
System.out.println( (a + b)+"" );
System.out.println( ""+(a + b) );
}
}
package Operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x? y: z
//如果x=true,则结果为y,否则结果为z
int score=80;
String type= score<60 ? "不及格":"及格";//必须掌握
System.out.println(type);
}
}
package Operator;
public class Demo09 {
public static void main(String[] args) {
int a=10;
int b=20;
int c=30;
System.out.println(a+b*c);//Java运算符优先级,括号最高,其次一元运算符(+-×/)、
}
}
浙公网安备 33010602011771号