java基础_02_运算符
7.运算符
public class helloworld { public static void main(String[] args) { //取余 模运算 % int a = 22; int b = 10; System.out.println(a%b); //输出结果2 }
public class helloworld { public static void main(String[] args) { //关系运算符(< > = !=) //输出结果一定是布尔值 int a = 10; int b = 20; System.out.println(a>b); //输出结果 false System.out.println(a<b); //输出结果 true System.out.println(a==b); //输出结果 false System.out.println(a!=b); //输出结果 true } }
public class helloworld { public static void main(String[] args) { //operator 运算符 //二元运算符(+-*/) //Ps ctrl+D 复制当前行到下一行 //场景一 当除出来如果有小数,一定要数据数据类型范围,需要转换数据类型 int a = 10; int b = 20; int c = 30; int d = 40; System.out.println(a+b); //输出结果 30 System.out.println(a-b); //输出结果 -10 System.out.println(a*b); //输出结果 200 System.out.println(a/b); //输出结果 0 预期10/20=0.5 System.out.println(a/(double)b); //输出结果 0.5 PS:当除出来如果有小数,一定要数据数据类型范围,需要转换数据类型 //场景二,不同数据类型之间的运算 //多个操作类型中有一个是long,结果为long类型,如果没有long的时候,结果为int类型(无论有没有int操作),如果有double,结果一定是double long a1 = 123123123123L; int b2 = 123; short c3= 10; byte d4 = 8; System.out.println(a1+b2+c3+d4); //运算出来=123123123264,long类型 System.out.println(b2+c3+d4); //结果=141 int类型,也没问题 System.out.println(c3+d4); //结果=18,int类型 } }
public class helloworld { public static void main(String[] args) { //模运算 一元运算符 // ++自增 --自减 int a = 3; int b = a++; //执行完这行代码后,先给b赋值,再自增 //a=a+1 //System.out.println(a);此时的a已经等于4,但是由于a++是先赋值再自增,所以b还是等于3 int c = ++a; //执行完这行代码后,先自增,再给c赋值 上面的a=4,现在自增1,a=5,所以c=5 System.out.println(a); //输出结果 5 System.out.println(b); //输出结果 3 System.out.println(c); //输出结果 5 //拓展 幂运算 2^3 2*2*2 = 8 很多运算我们会使用工具类来操作 double pow = Math.pow(2,3); System.out.println(pow); } }
public class helloworld { public static void main(String[] args) { //逻辑运算符 // 与(and) 或(or) 非(取反) boolean a = true; boolean b = false; System.out.println("a && b: "+(a&&b));//逻辑与运算 两个变量都为真,结果才为真 //其中b为false,按上述规则,所以输出结果为false System.out.println("a || b:"+(a||b)); //逻辑或运算 两个变量有一个为真,结果才为true //其中a为true,按上述规则,结果为true System.out.println("! (a && b):"+!(a&&b)); //逻辑非运算 如果是真,则变为假,如果是假,则变为真 //已知按照逻辑与运算 两个变量都为真,结果才为真,a与b,为false,取反即true //场景二,短路运算 int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d); // (c<4)为false,按照与运算 两个变量都为真,结果才为真,所以为false System.out.println(c); //c经过c++自增1,=5+1=6,实际输出结果5.说明第一步为错后,就没有执行第二个条件 } }
public class helloworld { public static void main(String[] args) { //位运算 一般用于2进制的位运算 也是与或非运算 /* A = 0011 1100 B = 0000 1101 A&B 与运算 //上下两位去比较,如果两个都为1,才为1,否则0 //运算结果 0000 1100 A|B 或运算 //对应位都是0,结果为0,否则为1 //运算结果 0011 1101 A^B 异或运算 //如两个位相同这位0,否则为1 //运算结果 0011 0001 ~B 非运算 //取反B //1111 0010 ----------------------------------- //PS:面试题: 2*8怎么运算最快 //位运算效率极高,通过计算机底层2进制运算 //拓展: 位移 左移<< 相当于把数字*2 右移>> 相当于把数字/2 以下为2进制的数字表现形式 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 2进制,每移动一位,数字变大一倍 * */ System.out.println(2<<3); //2左移3位=16;输出结果:16 } }
public class helloworld { //三元运算符 //1,条件运算符 ? : //2,扩展赋值运算符 += -= *= /= public static void main(String[] args) { //场景一:扩展赋值,+= -= int a = 10; int b = 20; a+=b; //简写 a= a+b System.out.println(a);//输出结果 30 int a1 = 30; int b1 = 20; a1-=b1; //简写 a= a1+b1 System.out.println(a1);//输出结果 10 //场景二:字符串连接符 + //在+运算符两侧,只要出现了String类型,就会把所有数据转成String,再连接 int a2 = 30; int b2 = 20; System.out.println(a2+b2);//输出结果30 System.out.println(""+a2+b2);//输出结果3020,连起来了 //PS面试题,上下两个""位置不同,结果有什么不同 System.out.println(a2+b2+"");//输出结果 50 //因为前面先执行了运算 } }
public class helloworld { public static void main(String[] args) { //三元运算符 条件运算符? //x ? y : z //如果x==true,则结果等于y,否则为z int score = 80; String type = score < 60?"不及格":"及格"; System.out.println(type); //输出结果及格 //非常重要,必须掌握 } }