java入门-----运算符
拓展:Scanner类的使用
含义:Java给我们提供的一个类,这个类的功能就是在控制台输入数据
Scanner scan = new Scanner(System.in);
int i1 = scan.nextInt();
int i2 = scan.nextInt();
double d = scan.nextDouble();
String str = scan.next();
1. 算数运算符:
+、-、*、/ :加减乘除;
++ :表示自加1,即在自身的基础上加1;
– :表示自减1,即在自身的基础上减1;
% :求余数,例如10%3=1;
1.经典面试题
int a = 8;
int b = (a++)+(++a)+(a*10);
System.out.println(b);
int i = 0 ;
i = ++i;
System.out.println(i);
int i = 0;
i = i++;
System.out.println(i);
拓展:
i++与i=i+1有何区别?
byte i=1;
i++;
i=i+1;
2.赋值运算符:
= :赋值,即将右边的值赋值给左边的变量;
+=、-=、 *=、/= 、 %= :复合赋值;
例如:
int a=10;
a+=10;
a-=10;
a*=10;
a/=10;
a%=10;
经典面试题
int a,b;
a = b = 100;
System.out.println(a);
System.out.println(b);
short s=1;
s = s+1;
short s=1;
s += 1;
赋值规则:
复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op (E2)),其中T是E1的类型。
3.关系运算符:
== :等于
!= 不等于、>大于、 <小于、 >=大于或等于、 <=小于或等于
注意:
- 关系运算符的结果都是boolean类型,true或者 false
- 不要将 == 用成 =
经典面试题
int x = 10;
int y = 10;
boolean flag = (x == y);
System.out.println(flag);
flag = (x = y);
System.out.println(flag);
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);
System.out.println(b3);
boolean b4 = (b1 = b2);
System.out.println(b4);
4.三目运算符/三元运算符
语法:
数据类型 变量 = (表达式)?值1:值2;
? 例如:
? int max = (a>b)?a:b;
理解:
? 表达式的结果必须是boolean类型 ? true - 将值1赋值给变量 ? false- 将值2赋值给变量
案例:在控制台输入两个int类型的数字,输出最大值
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
int max = (a>b)?a:b;
System.out.println("最大值为:" + max);
5. 逻辑运算符:
&(与)、&&(短路与)、|(或) 、||(短路或)、!(非)、^(异或)
规则:
& 和 && 规则: 两个有一侧为false,结果为false
| 和 || 规则 :两侧有一侧为true,结果为true
^ 规则: 两侧相同为false,不同为true
!规则:置反,false变成true , true变成false
注意:
1.逻辑运算符运行结果都是boolean类型
2.&、&&、|、||、^ 两侧都是boolean类型数据
System.out.println(true & true);
System.out.println(true & false);
System.out.println(false & true);
System.out.println(false & false);
System.out.println(true && true);
System.out.println(true && false);
System.out.println(false && true);
System.out.println(false && false);
System.out.println(false && 10/0>5);
System.out.println(true | true);
System.out.println(true | false);
System.out.println(false | true);
System.out.println(false | false);
System.out.println(true || true);
System.out.println(true || false);
System.out.println(false || true);
System.out.println(false || false);
System.out.println(true || 10/0>5);
System.out.println(true ^ true);
System.out.println(true ^ false);
System.out.println(false ^ true);
System.out.println(false ^ false);
boolean bool1 = true;
System.out.println(!bool1);
boolean bool2 = false;
System.out.println(!bool2);
6.字符串拼接符
+两侧都是数值,此符号为算术运算符
int a=1,b=1,c=1;
a = b + c;
a = 1 + 2;
+有一侧或者两侧是字符串,此符号为字符串拼接符
System.out.println(1+2+"abc" + "def" +1+2);
7.位运算符:
&(与) 、|(或)、^(异或)、’<<’ (左移)、’>>’(右移)、’>>>’(无符号位右移)
含义:将十进制的数据转换为二进制再进行运算
byte b1 = 23;
byte b2 = 25;
byte result = (byte)(b1 & b2);
System.out.println(result);
byte b1 = 23;
byte b2 = 25;
System.out.println(b1 | b2);
byte b1 = 23;
byte b2 = 25;
System.out.println(b1 ^ b2);
byte b1 = 10;
System.out.println(b1 << 2);
byte b1 = 10;
System.out.println(b1 >> 2);
byte b2 = -10;
System.out.println(b2 >> 2);
byte b1 = 10;
System.out.println(b1 >>> 2);
byte b2 = -10;
System.out.println(b2 >>> 2);
8.表达式
5+6:算数表达式
5>6:关系表达式
5|6:位运算表达式
9.运算符的优先级
经验:不用记,灵活运用小括号
优先级 | 运算符 | 结合性 |
---|
1 | () [] . | 从左到右 | 2 | ! +(正) -(负) ~ ++ – | 从右到左 | 3 | * / % | 从左到右 | 4 | +(加) -(减) | 从左到右 | 5 | << >> >>> | 从左到右 | 6 | < <= > >= instanceof | 从左到右 | 7 | == != | 从左到右 | 8 | &(按位与) | 从左到右 | 9 | ^ | 从左到右 | 10 | | | 从左到右 | 11 | && | 从左到右 | 12 | || | 从左到右 | 13 | ?: | 从右到左 | 14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右到左 |
10.转义字符
含义:具有特殊意义的字符本身 \n:表示换行
\" 表示一个双引号
\’ 表示一个单引号
\\ 表示一个斜杠
\t 表示水平制表 :使输出的语句对称
System.out.print("今天不上课\n");
System.out.print("今天不上课\n");
System.out.println("小明说:\"今天不上课\"");
System.out.println("小明说:\'今天不上课\'");
System.out.println("小明说:\\今天不上课\\");
System.out.println("3*3=9\t3*4=12\t3*5=15");
System.out.println("4*3=12\t4*4=16\t4*5=20");
今天不上课
今天不上课
小明说:"今天不上课"
小明说:'今天不上课'
小明说:\今天不上课\
3*3=9 3*4=12 3*5=15
4*3=12 4*4=16 4*5=20
|