Java SE基础篇(二)

一、算数运算符

运算符和表达式

  • 运算符:对常量或者变量进行操作的符号
  • 表达式:用运算符把常量或者变量连接起来的符合JAVA语法的句子。

算数运算符包括(+)(-)(*)(/)(%)

字符的+操作

对字符的与运算是用字符在计算机底层对应的数值来进行计算的

  • ASCLL编码表
1
2
3
4
int a='s';
int b='a';
System.out.println((int)'s'+" "+(int)'a'); //115 97
System.out.println(a+b); //212

前面也提到过,当算术表达式中包含多个基本数据类型的值的时候,整个算术表达式的类型会自动提升

  • 等级顺序:byte,short,char -> int -> long -> float -> double

字符串的+操作

当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符。

二、赋值运算符

符号 作用 说明
= 赋值 a=5,将5赋给变量a
+= 加后赋值 a+=b,将a+b的值赋给a
-= 减后赋值 a-=b,将a-b的值赋给a
*= 乘后赋值 a *=b,将a *b的值赋给a
/= 除后赋值 a/=b,将a /b的值赋给a
%= 取余后赋值 a%=b,将a%b的余数赋给a
1
2
3
4
5
 
short s=20;
s+=10; //此时不等价于s=s+20;因为扩展的赋值运算符底层包含了强制类型转换
s=(short)(s+10);
System.out.println(s); //40

三、自增、自减运算符

  • i++

    1
    2
    3
    4
    5
    int i=10;
    i++;
    int j=i++;
    System.out.println("i="+i+" j="+j);
    //输出为 i=12 j=11
  • ++i

    1
    2
    3
    4
    5
    int i=10;
    ++i;
    int j=++i;
    System.out.println("i="+i+" j="+j);
    //输出为 i=12 j=12

    可以看出i++是先赋值后运算,++i是先运算后赋值

四、关系运算符

关系运算符的结果都是boolean类型

符号 说明
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b,判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于等于b,成立为true,不成立为false
< a<b,判断a是否小于b,成立为true,不成立为false
<= a<=b,判断a是否小于等于b,成立为true,不成立为false

五、逻辑运算符

逻辑运算符是用来连接关系表达式的运算符,也可以直接连接boolean类型的常量或变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int a=10,b=20,c=30;
// & 同true则true
System.out.println(b>a&c>b); //true
System.out.println(a>b&a<c); //false

// | 同false则false
System.out.println(b>a||c>b); //true
System.out.println(a>b||a>c); //false

// ^ 相同为false,不同为true
System.out.println(b>a^c>b); //false
System.out.println(a>b^a>c); //false
System.out.println(a<b^a>c); //false

// ! 取反
System.out.println(!(a>b)); //true
System.out.println(!!(a>b)); //false

短路逻辑运算符

&&

作用与&相同,但有短路效果,即如果左边为真,右边执行;若左边为假,右边不执行

||

作用与|相同,有短路效果,即如果左边为假,右边执行;若左边为真,右边不执行

六、三元运算符

格式: 关系表达式 ?表达式1 : 表达式2;

a>b?a:b

(即a>b返回true,则运算结果为a,若为false,运算结果为b)

1
2
3
int a=10,b=20;
int max= a>b?a:b;
System.out.println(max); //输出最大值20

七、笔试题

写出下面的代码输出结果

1
2
3
4
5
6
7
8
int x=1,y=1;
boolean b;
b=x++<0&&y++<0||x++<0||y++<0&&x++<0&&y++<0;
// false||x++<0||false x:2,y:2
// x:3,y:2
System.out.println(x);
System.out.println(y);
System.out.println(b);

考察内容

  1. 与运算的优先级比或运算高
  2. 短路运算符 不会做多余的运算

结果:

1
2
3
3
2
false

思维导图

ヾ(◍°∇°◍)ノ゙
献上

Java EE思维导图

请我喝杯咖啡吧~

支付宝
微信