Java基础学习03:运算符与表达式

本文详细介绍了Java中的运算符和表达式,包括算术、赋值、关系、逻辑、位和条件运算符,以及运算优先级的概念。通过案例演示了各种运算符的用法,如计算成绩差、幸运抽奖、比较学生成绩、解决一元二次方程、判断闰年、计算三角形面积等,帮助理解运算符在实际编程中的应用。

一、算术运算符

在这里插入图片描述

1、注意事项

  • 在进行自增(++)和自减(–)的运算时,如果运算符(++或–)放在操作数的前面则是先进行自增或自减运算,再进行其他运算。反之,如果运算符放在操作数的后面则是先进行其他运算再进行自增或自减运算
  • 注意运算优先级,(取负) -->*,/,% -->+,-。 如果要改变运算次序,那么需要加括号

2、案例演示

(1)计算成绩差与平均成绩

package net.xsp.lesson02;

import java.util.Scanner;

/**
 * 功能:计算成绩差与平均成绩
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class CountScore {

    public static void main(String[] args) {

        // 声明部分
        double pyt, java, sql, difference, average;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("输入Python的成绩:");
        pyt = sc.nextDouble();
        System.out.print("输入Java的成绩:");
        java = sc.nextDouble();
        System.out.print("输入MySQL的成绩:");
        sql = sc.nextDouble();

        // 处理部分
        difference = java - sql;
        average = (pyt + java + sql) / 3;

        // 输出部分
        System.out.println("==========================");
        System.out.println(String.format("%-9s%-9s%-9s","STB", "Java", "SQL"));
        System.out.println(String.format("%-9.1f%-9.1f%-9.1f", pyt, java, sql));
        System.out.println("==========================");
        System.out.println("Java与MySQL的成绩差:" + difference);
        System.out.println("三门课程的平均分:" + average);
    }
}

运行结果
在这里插入图片描述

(2)幸运抽奖

package net.xsp.lesson02;

import java.util.Scanner;

/**
 * 功能:由会员卡号计算幸运数
 *      幸运数等于会员卡号各位数字之和
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class LuckyDraw {
    public static void main(String[] args) {

        /* 声明部分 */
        int id; // 会员卡号
        int x1, x2, x3, x4; // 个位数、十位数、百位数、千位数
        int luckyNumber; // 幸运数字
        Scanner sc = new Scanner(System.in);  // 扫描器对象

        /* 输入部分 */
        System.out.print("输入会员卡号(四位数):");
        id = sc.nextInt(); // 从键盘接收一个整数

        /* 处理部分 */
        x1 = id % 10; // 取个位数
        x2 = id / 10 % 10; // 取十位数
        x3 = id / 100 % 10; // 取百位数
        x4 = id / 1000; // 取千位数
        luckyNumber = x1 + x2 + x3 + x4; // 计算幸运数字

        /* 输出部分 */
        System.out.println("你的幸运数:" + luckyNumber);
    }
}

运行结果
在这里插入图片描述

二、赋值运算符

赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。它将运算符右边的值赋给左边的变量。
在这里插入图片描述

1、注意事项

  • 在Java中可以通过一条赋值语句对多个变量进行赋值
  • 在赋值运算符中,除了“=”,其他的都是特殊的赋值运算符,以“+=”为例,x += 3就相当于x = x + 3,首先会进行加法运算x + 3,再将运算结果赋值给变量x。其余的-=、*=、/=、%=赋值运算符都可依此类推

三、关系运算符

在这里插入图片描述

1、案例演示

(1)比较两个学生成绩

package net.xsp.lesson02;

import java.util.Scanner;

/**
 * 功能:比较两个同学成绩高低
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class CompareResults {
    public static void main(String[] args) {
        /* 声明部分 */
        int zhangScore; // 张三的成绩
        int liScore; // 李四的成绩
        boolean isHigher; // 张三是否比李四成绩高
        Scanner sc = new Scanner(System.in); // 接受键盘输入的扫描器对象

        /* 输入部分 */
        System.out.print("输入张三的成绩:");
        zhangScore = sc.nextInt();
        System.out.print("输入李四的成绩:");
        liScore = sc.nextInt();

        /* 处理部分 */
        isHigher = zhangScore > liScore;

        /* 处理与输出部分 */
        System.out.println("张三比李四成绩高吗?" + isHigher);
        if (isHigher) {
            System.out.println("张三要比李四成绩高!");
        } else {
            System.out.println("张三不比李四成绩高!");
        }
    }
}

运行结果
在这里插入图片描述

(2)求解一元二次方程

package net.xsp.lesson01;

import java.util.Scanner;

/**
 * 功能:求解一元二次方程
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class SolveEquation {
    public static void main(String[] args) {
        // 声明部分
        double a, b, c, delta, x1, x2;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("a = ");
        a = sc.nextDouble();
        System.out.print("b = ");
        b = sc.nextDouble();
        System.out.print("c = ");
        c = sc.nextDouble();

        // 处理部分
        delta = b * b - 4 * a * c;
        if (delta >= 0) {
            x1 = (-b + Math.sqrt(delta)) / (2 * a);
            x2 = (-b - Math.sqrt(delta)) / (2 * a);
            System.out.println("x1 = " + x1);
            System.out.println("x2 = " + x2);
        } else {
            System.out.println("此方程没有实数解!");
        }
    }
}

运行结果
在这里插入图片描述

四、逻辑运算符

逻辑运算符是用于对布尔类型的值或表达式进行操逻辑判断的符号,其返回值类型是布尔类型。
在这里插入图片描述

  • 与运算
    在这里插入图片描述

  • 或运算
    在这里插入图片描述

  • 异或运算
    在这里插入图片描述

  • 非运算
    在这里插入图片描述

1、注意事项

  • 逻辑运算符可以针对结果为布尔值的表达式进行逻辑运算。如:5 > 3 && 1 != 0的结果为true
  • 运算符“&”和“&&”都表示与操作,当且仅当运算符两边的操作数都为true时,其结果才为true,否则结果为false
  • “&”和“&&”的区别:在使用“&”进行运算时,不论左边为true或者false,右边的表达式都会进行运算。如果使用“&&”进行运算,当左边为false时,右边的表达式不会进行运算,因此“&&”被称作短路与
  • 运算符“|”和“||”都表示或操作,当运算符任何一边的操作数或表达式为true时,其结果为true,当两边的值都为false时,其结果才为false。同与操作类似,“||”表示短路或,当运算符“||”的左边为true时,右边的表达式不会进行运算
  • 运算符“^”表示异或操作,当运算符两边的布尔值相同时(都为true或都为false),其结果为false。当两边布尔值不相同时,其结果为true

2、案例演示

(1)闰年判断

package net.xsp.lesson02;

import java.util.Scanner;

/**
 * 功能:判断闰年
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class JudgeLeapYear {
    public static void main(String[] args) {
        // 声明部分
        int year;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("year = ");
        year = sc.nextInt();

        // 处理部分 + 输出部分
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
            System.out.println(year + "是闰年。");
        }else {
            System.out.println(year + "是平年。");
        }
    }
}

运行结果
在这里插入图片描述

(2)计算三角形面积

package net.xsp.lesson02;

import java.util.Scanner;

/**
 * 功能:计算三角形面积
 * 要判断能否构成三角形
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class CalculateTriangArea {
    public static void main(String[] args) {
        // 声明部分
        double a, b, c, p, s;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("a = ");
        a = sc.nextDouble();
        System.out.print("b = ");
        b = sc.nextDouble();
        System.out.print("c = ");
        c = sc.nextDouble();

        // 处理部分 + 输出部分
        if (a + b > c && b + c > a && c + a > b) {
            p = (a + b + c) / 2;
            s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
            System.out.println("三角形面积:" + s);
        } else {
            System.out.println(a + "、" + b + "、" + c + "构不成三角形!");
        }
    }
}

运行结果
在这里插入图片描述
在这里插入图片描述

五、位运算符

在这里插入图片描述

  • 按位与运算
    在这里插入图片描述

  • 按位或运算
    在这里插入图片描述

  • 按位异或运算
    在这里插入图片描述

  • 取反运算
    在这里插入图片描述

1、注意事项

位运算符本质都是针对二进制数0和1进行运算的,在使用位运算符时,都会先将操作数转换成二进制数的形式进行位运算,然后将得到的结果再转换成想要的进制数。其中,1表示true,0表示false。

六、条件运算符

条件运算符也称作三元运算符(或三目运算符),由符号“? :”组合构成。对布尔类型的表达式判断,如果为true,就执行冒号“:”前面的表达式,否者执行后面的表达式。

1、语法格式

(boolean_expr) ? true_statement : false_statement;

注:先判断boolean_expr的值,如果为true,就执行表达式true_statement,否者执行表达式false_statement。

2、案例演示

(1)根据输入年龄提示不同信息

package net.xsp.lesson02;

import java.util.Scanner;

/**
 * 功能:根据输入年龄提示不同信息
 * 作者:xsping
 * 日期:2019年3月21日
 */
public class AgePrint {
    public static void main(String[] args) {
        // 声明部分
        int age;
        String msg;
        Scanner sc = new Scanner(System.in);

        // 输入部分
        System.out.print("输入你的年龄:");
        age = sc.nextInt();

        // 处理部分
        msg = age >= 18 ? "欢迎访问本网站~" : "未成年,旁边凉快去!";

        // 输出部分
        System.out.println(msg);
    }
}

运行结果
在这里插入图片描述
在这里插入图片描述

七、运算优先级

1、运算优先级概述

  • Java
    语言中大部分运算符也是从左向右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算
  • 乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。运算符有不同的优先级,所谓优先级就是在表达式运算中的运算顺序
  • 一般而言,单目运算符优先级较高,赋值运算符优先级较低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,单目运算符、三目运算符、赋值运算符具有右结合性
  • Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行
    在这里插入图片描述
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值