logo头像
Snippet 博客主题

【JavaSe必知必会】11-Java运算符之算术运算符

运算符

  • 运算
    • 对常量和变量进行操作的过程称为运算。
  • 运算符
    • 对常量和变量进行操作的符号称为运算符
  • 操作数
    • 参与运算的数据称为操作数
  • 用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。
  • 不同运算符连接的式子体现的是不同类型的表达式。
1
2
3
4
5
6
7
举例:
int a = 3 + 4;

这是做了一个加法运算
+就是运算符,是算术运算符,我们还有其他很多的运算符
3,4就是参与运算的操作数据
3 + 4整体其实就是一个算数表达式

运算符类别

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三目运算符

    算术运算符

    image

    基本用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
运算符:
就是对常量和变量进行操作的符号。

分类:算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符,三目运算符

算术运算符:
+,-,*,/,%,++,--

注意事项:
A:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
B:/获取的是除法操作的商,%获取的是除法操作的余数
*/

class OperatorDemo {
public static void main(String[] args) {
//定义变量
int x = 3; //把3赋值给int类型的变量x
int y = 4;

System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y); //整数相除只能得到整数

//我就想得到小数,该肿么办呢?
//只需要把操作的数据中任意的一个数据变为浮点数
System.out.println(x*1.0/y);

//%的应用
System.out.println(x%y); //得到的是余数
}
}

++和–的应用

  • 单独使用效果相同
  • 参与运算使用,在操作数的前后效果不同
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    /*
    ++,--运算符的使用:
    单独使用:
    放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
    参与运算使用:
    放在操作数的前面,先自增或者自减,然后再参与运算。
    放在操作数的后面,先参与运算,再自增或者自减。

    作用:就是对变量进行自增1或者自减1。
    */
    public class OperatorDemo2 {
    public static void main(String[] args) {
    //定义两个变量
    int x = 3;
    int y = 4;

    //字符串的拼接
    //System.out.println("x:"+x);
    //System.out.println("y:"+y);

    System.out.println("x:"+x+",y:"+y);

    //单独使用
    //x++;
    //y--;
    ++x;
    --y;
    //System.out.println(x);
    System.out.println("x:"+x+",y:"+y);

    //意外的类型,常量是不可以这样做的
    //System.out.println(10++);

    System.out.println("-------------------");
    //参与运算使用
    int a = 3;
    int b = 4;

    //int c = a++;
    //int d = b--;

    int c = ++a;
    int d = --b;

    System.out.println("a:"+a); //4, 4
    System.out.println("b:"+b); //3, 3
    System.out.println("c:"+c); //3, 4
    System.out.println("d:"+d); //4, 3
    }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
++,--的练习题

第一题:
int a = 10;
int b = 10;
int c = 10;

a = b++;
c = --a;
b = ++a;
a = c--;
请分别计算出a,b,c的值

第二题:
int x = 4;
int y = (x++)+(++x)+(x*10);
请分别计算出x,y的值
*/
public class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 10;
int c = 10;

a = b++; //a=10,b=11,c=10
c = --a; //a=9,b=11,c=9
b = ++a; //a=10,b=10,c=9
a = c--; //a=9,b=10,c=8

System.out.println("a:"+a);
System.out.println("b:"+b);
System.out.println("c:"+c);
System.out.println("--------------");

int x = 4;
int y = (x++)+(++x)+(x*10);
//4+6+60
//x=5,6

System.out.println("x:"+x);
System.out.println("y:"+y);
}
}

运算符的优先级

image

==如果在程序中,要改变运算顺序,可以使用()。==

+运算符的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
+的用法:
A:加法
B:正号
C:字符串连接符
*/
class OperatorDemo3 {
public static void main(String[] args) {
//加法
System.out.println(3+4);

//正号
System.out.println(+4);

System.out.println('a');
System.out.println('a'+1); //这里是加法

//字符串连接符
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
}
}

赋值运算符

符号:
= , +=, -=, *=, /=, %=

=为基本的赋值运算符,其他的为扩展的赋值运算符

  • = 赋值号

  • +=加赋值

    • 把左边和右边的结果赋值给左边。
    • 注意:====左边不能是常量====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
赋值运算符:
基本赋值运算符:=
把=右边的数据赋值给左边。
扩展的赋值运算符:+=,-=,/=,%=
*/
public class OperatorDemo4{
public static void main(String[] args){
//定义一个变量
int x = 10;

//其他用法
int a,b;
a = b = 10;
System.out.println(a);
System.out.println(b);
System.out.println("-------------------------------");

//定义一个变量
int y = 10;

y += 10;//等价于y = y + 10;

System.out.println(y);
}
}

面试题解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
面试题:
short s=1;s = s+1;

short s=1;s+=1;
上面两个代码有没有问题,如果有,那里有问题。

为什么第二个木有问题呢?
扩展的赋值运算符其实隐含了一个强制类型转换。

s += 1;
不是等价于 s = s + 1;
而是等价于 s = (s的数据类型)(s + 1);
*/
class OperatorTest {
public static void main(String[] args) {
//short s = 1;
//s = s + 1;
//System.out.println(s);

short s = 1;
s += 1; //好像是 s = s + 1;
System.out.println(s);
}
}
微信打赏

赞赏是不耍流氓的鼓励