Java学习五之基础语法(三)运算符和表达式

运算符

运算符:对数据进行运算的操作符
在Java中,针对运算符的操作数的多少,可以分成单目运算符,二目运算符,三目运算符。

表达式

表达式:由数据/变量/常量加上运算符组成的代码

a+b;
c=65535;

表达式可以对数据进行指定的运算,表达式还会有一个结果。

算术运算符

运算符作用示例说明
+1)加法
2)正号
3)字符串拼接
1)int sum=10=20;
2)表示正号
3)"Hello+“world”+sum
1)对数值(除boolean)进行加法运算
-1)减法
2)负号
*乘法
/除法如果除数和被除数都是整数,结果也是整数
%取余、求余、求模10%3=1
10.1%3.3=0.2
可以对整数,也可以对小数,还可以对负数
++自增对数值(除boolean)进行+1前置:符号在前,变量在后,先进行自增运算,再计算表达式的值
后置:符号在后,变量在前,先计算表达式的值,在进行自增运算
自减对数值(除boolean)进行-1前置:符号在前,变量在后,先进行自减运算,再计算表达式的值
后置:符号在后,变量在前,先计算表达式的值,在进行自减运算

对求余运算的说明

-10%3=-1,
10%-3=1,
-10%-3=-1

所以对于负数求余,值决定与这两个数的绝对值,符号与第一个数的符号相同。

@Test
public void test4() {
    int num1 = 3;
    int num2 = 5;
    int result = num1 + num2;
    System.out.println(result); //8
    System.out.println(8 / 2);//4
    System.out.println(8 % 2);//0
    System.out.println(8 / 5);//1
    System.out.println(8 % 5);//3
}

++(自增1) --(自减1)
int i = 0;
i++; // i = i + 1;
i–; // i = i - 1;
++i; // i = i + 1
–i; // i = i - 1

1、单独使用的时候,++、--在前后是没有差别的 2、被使用的时候,在前后是有差别的
@Test
public void test5(){
    int i = 3;
    i++;
    System.out.println(i);//4
    System.out.println(i++);//4
    System.out.println(i);//5
    System.out.println(++i);//6
}

+号运算符:
1、两边都是数字,则做的就是加法运算
2、若一边为字符串,则做的是字符串的拼接

 @Test
    public void test12() {
        int age = 23;
        System.out.println("我的年龄是" + age);
//        豆豆加加
        System.out.println("我的年龄是" + age + "岁了");
        System.out.println(10+20+""+30);//3030
        System.out.println(""+10+20+30);//102030
    }

比较运算符/关系运算符

运算符结果说明
>boolean只针对数值型 (除了boolean)的进行比较
>=boolean只针对数值型 (除了boolean)的进行比较
<boolean只针对数值型 (除了boolean)的进行比较
<=boolean只针对数值型 (除了boolean)的进行比较
==boolean可以对所有的数据类型进行比较,包括引用类型,当针对的是引用类型时,比较的是两个对象是否指向同一块时间
!=boolean可以对所有的数据类型进行比较,包括引用类型,当针对的是引用类型时,比较的是两个对象是否指向同一块时间
@Test
public void test6() {
    System.out.println(3 > 5);//false
    System.out.println(5 <= 10);//true
}

逻辑运算符

运算符名称结果过程
&,&&逻辑与只能针对布尔型,结果也是布尔值都为true,才为true
`,`
!逻辑非只能针对布尔型,结果也是布尔值true为false,false为true

&&:两边的结果都是true,结果才是true
||:两边只要有一个是true,结果就是true
顺利毕业: true
1、平时成绩>60 boolean(true)
&& ||
2、四级成绩>400 boolean(true)

@Test
public void test7() {
    int score1 = 67;
    int score2 = 380;
    boolean result1 = (score1 >= 60) && (score2 >= 400);
    System.out.println(result1);//false
    boolean result2 = (score1 >= 60) || (score2 >= 400);
    System.out.println(result2);//true
}

短路运算:

针对&&,||在运算过程中,如果第一个表达式的值就已经可以确定整个运算的结果,这是第二个表达式将不再执行

  @Test
    public void test8() {
        int num1 = 3;
        int num2 = 5;
//        &&短路
        System.out.println(num1 < 0 && num1++ < num2);//false
        System.out.println(num1);//3
        System.out.println(num2);//5
//        ||短路
        System.out.println(num1 > 0 || num1++ < num2);//true
        System.out.println(num1);//3
        System.out.println(num2);//5
    }

位运算符

运算符名称结果说明
&按位与所有位运算都是在二进制的基础上进行的对应位都为1,才为1
``按位或所有位运算都是在二进制的基础上进行的
^按位异或所有位运算都是在二进制的基础上进行的相同为0,不同为1
~按位取反所有位运算都是在二进制的基础上进行的1变0,0变1
<<左移位所有位运算都是在二进制的基础上进行的所有位向左移动相应的位数
>>右移位所有位运算都是在二进制的基础上进行的向右移,前面补符号位
>>>无符号有移位所有位运算都是在二进制的基础上进行的向右移,前面补0

左移位相当于乘以2
以最快的方式计算10 * 64的结果
位运算是速度最快的byte和short在运算时会转成int类型

在这里插入图片描述

赋值运算符

= 赋值,将右边表达式的值,存放到左边的变量中,
当赋值运算符与二目运算符进行组合,就会变成符合赋值运算符
+=,-=,* =, /=,%=
A+=B; 相当于A=A+B 只是结果上相同,不是等价的

三目运算符/三元运算符/条件运算符

语法:boolean ? 数1 : 数2
执行过程:计算boolean的值
若为true:则整个结果为数1
若为false:则整个结果为数2
数1和数2 只会返回其中一个

运算符的优先级

先乘除,后加减,有括号先算括号
如果有一表达式中,包含了很多运算符,也有运算符的优先级,也有运算符的运算顺序
下表中优先级上行优先于下行

运算符说明Java运算符
分隔符. [] () {} , ;
单目运算符++ -- ~ !
强制类型转换运算符(type)
乘法、除法、求余* / %
加法、减法+ -
移位运算符<< >> >>>
关系运算符< <= > >= instanceof
等价运算符== !=
按位与&
按位异或^
按位或`
按位与&&
按位或`
三目运算符?:
赋值运算符=

练手

从控制台输入两个数,然后分别打印这两个数,然后交换这两个数的值
在这里插入图片描述

   @Test
//    从控制台输入两个数,然后分别打印这两个数,然后交换这两个数的值

    public void test13() {
        Scanner sc=new Scanner(System.in);
        double num1=sc.nextDouble();
        double num2=sc.nextDouble();
        System.out.println(num1+"   "+num2);
        double temp=num1;
        num1=num2;
        num2=temp;
        System.out.println(num1+"   "+num2);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_不知名小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值