运算符:就是对常量或者遍历进行操作的符号;
表达式:用运算符把常量或者变量连接起来符合java语法的式子称为表达式,不同运算符连接的表达式体现的是不同类型的表达式。
1 //1、取余 2 int n=255; 3 char n2='A'; 4 double n3=16.8; 5 System.out.println(n3&8);//0.800000000000007 6 int a=6; 7 int b=4; 8 System.out.println(a+b);//10 9 System.out.println(a-b);//2 10 System.out.println(a*b);//24 11 System.out.println(a/b);//1 12 System.out.println(a%b);//2 13 //除法得到的是商,取余得到的是余数 14 //整数相除只能得到整数,要想得到小数,必须有浮点数的参与 15 System.out.println(6.0/4);//1.5
注意事项:
拿字符在计算机底层对应的数值来进行计算的
‘A’----65;A-Z是连续的
'a'----97;a-z是连续的
‘0’----48;0-9是连续的
1 int i=10; 2 //char c='A';//75,"A"的值为65 3 //char c='a';//107 “a”的值为97 4 char c='0';//58 “0”的值为48 5 System.out.println(i + c);//58 6 7 8 //char ch=i+c;//类型错误,char类型会被自动提升为int类型 9 int j=i+c; 10 System.out.println(j);//58 11 12 double k=10+13.14; 13 System.out.println(k);
注意:算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动进行提升
提升规则:
byte类型,short类型和char类型将被提升到int类型;
整个表达式的类型自动提升到表达式中最高等级操作同样的类型
等级顺序:byte,short,char--->int----->long---->flooat---->double
当“+”操作中出现字符串时,这个“+”时字符串连接符,而不是算数运算;
在“+”操作中,如果出现了字符串,就是连接运算符,否则就是算数运算,当连续进行“+”操作时,从左到右逐个执行
例如:1+99+“年级”=====100年级
1 int a=10,b=20; 2 int c1=a++; 3 int c2=++b; 4 System.out.println("a="+a+",b="+b+"c1="+c1+",c2"+c2);//11 21 10 21
结论:
1 //不管成立不成立,结果为布尔值,true or false 2 3 int max=10; 4 int num=9; 5 boolean b1=max>15;//false 6 boolean b2=num%2==1;//true 7 System.out.println(num=max);//把max的值赋值给num
结论:与运算:一假必假
或运算:一真必真
1 //4、逻辑运算符 2 //与 3 int score=80; 4 boolean res13=score>=60&&score<=90;//true 5 //或 6 boolean flag=true; 7 int i=200; 8 boolean res2=flag||(i>=0&&i<10);//true 9 //非 10 res2=!flag||(i>=0&&i<10);//flase
(&&)短路与运算:一假必假 指:当一个表达式为假时后面的表达式就不会再取运算了
(||)短路或运算:一真必真 指:当第一个表达式为真时后面的表达式不参与运算
1 int i=100,j=200; 2 boolean b1=(i>j)&&(i++>100); 3 System.out.println(b1); 4 System.out.println(i); 5 boolean b2=i>0||j++>200; 6 System.out.println(b2); 7 System.out.println(j);
赋值运算符一定是从右边表达式看向左边
i=1;表达式将1赋值给i;
1 //赋值运算符 2 int x,y,c; 3 x=y=c=100; 4 //将100赋值给c----》b=(c=100)
1 i=10; 2 i += 20;//把左边和右边的数据做加法操作,结果赋值给左边,相当于 i=i+20; 3 //注意:扩展的赋值运算符底层隐含了强制类型转化; 4 short s=10; 5 s=(short)(s+20); 6 System.out.println(s);
三目运算符(条件运算符):
boolean表达式?表达式1:表达式2;
boolean表达式为true,则运算表达式1,否则运行表达式2.
自右向左结合 1 String s=65>60?"及格":"不及格";//不及格
三目运算符可以嵌套使用,表达式1和表达式2的结果可以为嵌套三目的boolean表达式
1 int a=-1; 2 String r=a>0?"正数":(a==0?"0":"负数");
按照二进制数进行操作;
操作数:整型
& | ^:boolen
& | ^ ~ << >> >>>
&:(与运算:两个同时为1,结果为1,否则为0)
0&0 1&0 0&1 1&1
|:(或:参加运算的两个对象,一个为1,其值为1)
0|0 1|0 0|1 1|1
^:(异或:相同为0,不同为1,将某些位置取反)
0^0 1^0 0^1 1^1