操作数数据类型 nvarchar 对于 sum 运算符无效_java_Day02: 算术运算符

算术运算符

1一元运算符(只需要一个操作数)

1.1 自加运算

i++:表示:先运算后赋值 ++i:表示:先赋值后运算 例如:

int i = 5;
        sum = i++;//先计算,后赋值
        System.out.println(sum+" "+i)//输出5 6

        int i = 5;
        sum = ++i;//先赋值,后计算
        System.out.println(sum+" "+i)//输出6 6

1.2 自减运算

i--:表示:先运算后赋值 --i:表示:先赋值后运算 例如:

int i = 5;
        sum = i--;//先计算,后赋值
        System.out.println(sum+" "+i)//输出5 4

        int i = 5;
        sum = --i;//先赋值,后计算
        System.out.println(sum+" "+i)//输出4 4

2二元运算符(需要二个操作数)

+ - * / % 加法运算: + 减法运算: - 乘法法运算: * 除法运算: / 模运算(取余运算): % 例如:

int i = 5,j = 4
        sum = i + j;
        System.out.println(sum)//输出9
        sum = i - j;
        System.out.println(sum)//输出1
        sum = i * j;
        System.out.println(sum)//输出20
        sum = i / j;
        System.out.println(sum)//输出1  5对4取商
        sum = i % j;
        System.out.println(sum)//输出1  5对4取余

随堂练习:

要求:

1)获取整数987的百位数、十位数和个位数。

//求一个数的个,十,百,三位数
        int num = 699;
        int ge,shi,bai;
        ge = num % 10;
        shi = num/10%10;
        bai = num/100;
        System.out.println(ge+" "+shi+" "+bai);//输出9 9 6

2)判断一个数是奇数还是偶数;

//判断奇偶  
        System.out.print("请输入一个数:");
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        if(num == 0)
        {
            System.out.println("既不是奇数也不是偶数");
        }
        else if(num % 2 == 0)
        {
            System.out.println("偶数");
        }
        else
        {
            System.out.println("奇数");
        }

3)int a = 3, b = 4; 求a++ / 3 + --b * 2 - a-- % 6 + b++ * 3 - ++b的值。

//计算过程:
        /*
        a:3
        b:5
        sum:3/3+3*2-4%6+3*3-5=1+6-4+9-5=7
        */
        int a = 3, b = 4,sum; 
        sum=a++ / 3 + --b * 2 - a-- % 6 + b++ * 3 - ++b;
        System.out.println("a:"+a+"b:"+b+"sum:"+sum);//输出a:3 b:5 sum:7

3 赋值运算

3.1 = 把等号右边的值赋值给左边

随堂练习

要求: 交换两个数的值,三种方法。

public class OperatorDemo02{
    public static void main(String[] args){
        int num1 = 3,num2 = 5;
        /*
        //方法一:
        //优点:很好理解
        //缺点:需要开辟内存空间
        int temp;
        temp = num1;
        num1 = num2;
        num2 = temp;
        */
        /*
        //方法二:
        //优点:不需要开辟内存空间
        //缺点:难理解
        num1 = num1 + num2;
        num2 = num1 - num2;
        num1 = num1 - num2;
        */
        /**/
        //方法三:
        //优点:效率高(二进制在计算)
        //缺点:极难理解
        num1 = num1 ^ num2;
        num2 = num1 ^ num2;
        num1 = num1 ^ num2;

        System.out.println(num1+" "+num2);
    }
}

经典面试题

int num = 5;
        num = num++;
        System.out.println(num);//输出结果为5

3.2 扩展赋值运算符

num += m ===> num = (num左边的数据类型)(num + (m));
        num -= m ===> num = (num左边的数据类型)(num - (m));
        num *= m ===> num = (num左边的数据类型)(num * (m));
        num /= m ===> num = (num左边的数据类型)(num / (m));
        num %= m ===> num = (num左边的数据类型)(num % (m));

经典面试题:

1、  short num = 11; num = num + 1; 和short num = 11; num += 1;哪一个正确呢?
    答:short num = 11; num += 1;正确;
    原因:num = num + 1 是整形int与short相加变为int型,而返回结果是short,所以不符合
    2、  int sum += 30; 请问这行语句语法是否正确???
    答:不符合,因为sum未赋值

例题:

输入三个学生成绩并求平均值(由于担心有的人没学过数组,循环结构,在此用最笨的法子写,谢谢支持) 不知道Scanner从键盘输入可以去看我的另一篇文章

import java.util.Scanner;
public class OperatorDemo03{
    public static void main(String[] args){
        double sum = 0;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个学生成绩");
        sum += input.nextDouble();
        System.out.println("请输入第二个学生成绩");
        sum += input.nextDouble();
        System.out.println("请输入第三个学生成绩");
        sum += input.nextDouble();
        System.out.println("平均成绩:"+ sum / 3);
    }
}

4.关系运算符(返回的只能是boolean类型)

关系运算符用来进行比较运算,关系运算符的运算结果是boolean类型。

>、<、>=、<=、==、!= 由于过于简单,就不啰嗦了 例题;

1. 定义三个数,然后对这三个数做升序排序。(还是一样,这里只为让大家看得更清晰)

public class OperatorDemo04{
    public static void main(String[] args){
        int num1 = 4, num2 = 3,num3 = 5;
        if(num1 > num2)
        {
            num1 = num1 ^ num2;
            num2 = num1 ^ num2;
            num1 = num1 ^ num2;
        }
        if(num2 > num3)
        {
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }
        if(num1 > num2)
        {
            num1 = num1 + num2;
            num2 = num1 - num2;
            num1 = num1 - num2;
        }
        System.out.println("升序排列为:"+num1+" "+num2+" "+num3);//输出 3 4 5
    }

5.逻辑运算符

5.1 & 与

&运算特点: true & true = true; true & false = false; false & true = false; false & false = false; &与运算: 只有两边都为true,结果才为true 否则为false

5.2 | 或

|运算特点: true | true = true; true | false = true; false | true = true; false | false = false; |或运算: 只有两边都为false,结果才为false 否则为true

5.3 && 逻辑与运算, || 逻辑或

&&逻辑与(短路与): 只有两边都为true,结果才为true 只要左侧为false,则右边表达式不执行,直接返回false ||逻辑或(短路或): 只有两边都为false,结果才为false 只要左侧为true,则右边表达式不执行,直接返回true

5.4 ^ 逻辑异或

^运算特点: true ^ true = false; true ^ false = true; false ^ true = true; false ^ false = false; ^运算规律: 运算两边相同,那么结果肯定为false 运算两边不同,那么结果肯定为true

5.5 ! 逻辑非

!运算特点: !true = false; !false = true;

例题:

1)判断一个数是否在4(不包含)~6(包含)之外;

import java.util.Scanner;
public class OperatorDemo05{
    public static void main(String[] args){
        //2、判断一个数是否在4(不包含)~6(包含)之外;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = input.nextInt();
        if(num > 4 && num <= 6)
        {
            System.out.println("在");
        }
        else
        {
            System.out.println("不在");
        }
    }
}

2)判断true还是false

/*
        int num = 10;
        System.out.println(false && (num=5)>3);//false,短路与
        System.out.println(num);//10
    */

注意:& 与 &&,| 和 || 区别

&&和&的运算结果是一样的,但是运算的过程有所不同
&:无论左边的运算结果是什么,右边都需要参与运算
&&:如果左边运算结果为false,那么右边就不需要参与运算了,直接返回结果false
     如果左边运算结果为true,那么需要进行右边的运算,并返回右边运算的结果
||和|的运算结果是一样的,但是运算的过程有所不同
|:无论左边的运算结果是什么,右边都需要参与运算
||:如果左边运算结果为true,那么右边就不需要参与运算了,直接返回结果true
如果左边运算结果为false,那么需要进行右边的运算,并返回右边运算的结果

6. 位运算(二进制计算)

位运算是直接对二进制进行的运算。(大家可以看我后续的文章),这个小节就不做过多解释

6.1 &位运算

位都为1,结果才为1,否则结果为0 例如:7 & 3 = 3

111
 &011
------
  011

6.2 |位运算

位只要有一个为1,那么结果就是1,否则就为0 例如:7 | 3 = 7

111
 |011
------
  111

6.3 ^ 位运算

两个操作数的位中,相同则结果为0,不同则结果为1 例如:7 ^ 3 = 4

111
 ^011
------
  100

6.4 ~位运算

如果位为0,结果是1,如果位为1,结果是0 例如:~6 = -7

0000 0000 0000 0000 0000 0000 0000 0110
取反 1111 1111 1111 1111 1111 1111 1111 1001

7.三元运算符

三元运算符又称为三目运算。 语法格式:条件表达式? 表达式1 : 表达式2 如果条件表达式为true,则取表达式1的值,否则就取表达式2的值。

【随堂练习】

1、获取两个数的最大值或最小值

int a = 5, b = 8,max;
max=a>b?a:b//返回结果 8

8.运算符优先级

关于这节大家不用死记,多敲多练即可。也可以看我后续文章中有更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值