javaSE --基础部分 运算符

算数运算符

运算符和表达式

  • 运算符: 对常量或者变量进行操作的符号
  • 表达式: 用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式 不同运算符连接的表达式体现的是不同类型的表达式

举例说明:

int a = 10;
int b = 20;
int c = a + b;
  • +:是运算符,并且是算数运算符
  • a + b:是表达式,由于是+是算数运算符, 所以这个表达式叫算术表达式
  • / 和%的区别: 两个数据的做法,/取结果的商,%取结果的余数。
  • 整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。
    在这里插入图片描述
package test;
    /*
        运算符:
            对[常量]或[变量]进行操作的符号
        算数运算符
            + - * : 跟小学数学的运算方式一样

            /: 整数相除,结果只能得到整数,如果相要得到带有小数的结果,必须加入小数(浮点类型)的运算

            %(取模) : 取余数
    * */
public class code03 {
        public static void main(String[] args) {
            System.out.println(10 + 20);
            System.out.println(10 - 20);
            System.out.println(10 * 20);

            System.out.println("------------------------");

            /*
            *       / : 整数相除,结果只能得到整数,如果想要得到带有小数的结果,必须加入小数(浮点类型)的运算
            * */
        System.out.println(10 / 2);             //5
        System.out.println(10 / 3);             //3
        System.out.println(10 / 3.0);           //3.3333333333333335
        System.out.println(10.0 / 3);           //3.3333333333333335

            System.out.println("------------------------");
        /*
            %(取模): 取余数
        * */
            System.out.println(5 % 2);  // 5 / 2 = 商2,取余为1
        }
}        

字符的”+”操作
在这里插入图片描述

  • ASCII码表
    ASCI:美国信息交换标准代码
    是计算机中字节到字符的一套对应关系.

为什么要有这样的码表?
计算机数据中的存储,都是以字节的形式在进行存储,我们不会直接操作繁琐的, 不便于记忆的字节。
例如:我们想要使用字符a,但字符a真正存储的字节表示是数值97,如果直接面向字节,那现在要表示字节j 难道还要现去查找吗?
不现实,太麻烦!

a和b的运算中,a 为int类型 , b 为char类型
当(byte short char int) 在一起运算的时候,都会提升为int之后,再进行运算char提升为int的过程,就是查找码表中。字符所对应的数值表示形式
字符‘a’ 查找到数值97之后,在跟数值1进行运算,结果就是98
所以最终输出在控制台的结果就是98

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

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

  • “List item” + 666

当“ +” 操作中,如果出现了字符串,就是连接运算符,否则就是算数运算,当连续进行"+" 操作时,从左到右逐个执行

  • 1 + 99 + “List item”

案例: 数值拆分
需求: 键盘录入一个三位数,将其拆分为个数,十位,百位后,打印在控制台

分析:

使用Scanner键盘录入一个三位数

个位的计算:数值%10

123 除以10 (商12,余数为3)

十位的计算:数值 /10% 10

123除以10 (商12,余数为3 整数相除只能得到整数)

12除以10 (商1 ,余数为2)

百位的计算: 数值/100

123 除以 100(商1 余数为23)

将个位,十位,百位拼接上正确的字符串,打印即可

package test;

import java.util.Scanner;

        /*
               * 需求:键盘录入一个三位数,将其拆分为个位,十位,百位后,打印在控制台
               * 运行结果:
               *     请输入一个三位数:
               *     123
               *     整数123个位为:3
               *     整数123十位为:2
               *     整数123百位为:1
               * 分析:
               * 1.使用Scanner键盘录入一个三位数
               * 2.个位的计算:数值 % 10
               * 3.十位的计算:数值 / 10 % 10
               * 4.百位的计算:数值 / 100
               * 5.将个位,十位,百位拼接上正确的字符串,打印即可
               * */
public class code03 {
        public static void main(String[] args) {
        // 1.使用Scanner键盘录入一个三位数
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个三位数");
                int num = sc.nextInt();
                //2:个位的计算: 数值 % 10
                int ge = num % 10;              //123 % 10 = 3
                //3:十位的计算: 数值 / 10 % 10
                int shi = num / 10 % 10;        //123 % 10 = 2
                //4:百位的计算:数值 / 100
                int bai = num / 100;            //123 % 10 = 1
                //5:将个位,十位,百位拼接上正确的字符串,打印即可
                System.out.println("整数"+num+"个位为"+ge);
                System.out.println("整数"+num+"十位为"+shi);
                System.out.println("整数"+num+"百位为"+bai);
        }
}

自增自减运算符

在这里插入图片描述

  • 注意事项:
  • 单独操作的时候
  • 如果放在变量的后边,先将该变量原本的值,取出来参与操作,随后再进行自增(++),自减(—)
  • int a =10;
  • int b = a++
  • 如果放在变量的前边,先对变量做自增(++)或者自减(—),然后再拿变量操作
  • int a =10;
  • int b = ++a;

最常见的用法:单独使用

package test;
    /*
    * 参与操作:
    * ++在前:先对该变量做自增(++)或者自减(--),然后再拿变量参与操作
    * ++在后:先将该变量原本的值,取出来参与操作,随后再进行自增(++),自减(--).
    * */
public class code04 {
    public static void main(String[] args) {
        //++在前;先对该变量做自增(++)或者自减(--),然后再拿变量参与操作.
        int a = 10;
        int b =++a;

        System.out.println(a);  //11
        System.out.println(b);  //11

        //++在后:先将该变量原本的值,取出来参与操作,随后再进行自增(++),自减(--)。
        int aa =10;
                //bb = 10
        int bb = aa++;  // aa = 11

        System.out.println(aa); //11
        System.out.println(bb); //10

        int num = 123;
        System.out.println(num++);  //123
        System.out.println(num);    //124

        // System.out.println(10++);  这是错误代码,因为不能操作常量
    }
}

赋值运算符

在这里插入图片描述

package test;
    /*
    * 阅读下列代码,查看是否存在问题,如果有请指出并修正
    * */

public class code05 {
    public static void main(String[] args) {
        short s = 1;
        //s是short类型,1默认是Int类型
        //short和int相加,short会先提升为int,然后再进行运算
        //提升之后,就是两int相加,两个int相加,结果还是int,将int赋值给short
        //需要加入强转
        //s = s + 1;    //错误: 不兼容的类型:从int转换到short可能会有损失
        s = (short)(s+1);
        System.out.println(s);

        short ss = 1;
        ss +=1;         //ss = (short) (ss + 1)
                        //注意:扩展赋值运算符底层会自带转换功能
        System.out.println(ss);
    }
}

关系运算符

在这里插入图片描述
注意事项:
关系运算符的结果都是boolean类型,要么是true,要么是false。

千万不要把”==”误写成”=”.

package test;
    /*
    * 关系运算符(比较运算符):
    * (>)(>=) (<) (<=) (==) (!=)
    * */
public class code06 {
        public static void main(String[] args) {
            System.out.println(10 > 20);        //false
            System.out.println(10 >= 20);       //false
            System.out.println(10 < 20);        //true
            System.out.println(10 <= 20);       //true
            System.out.println(10 == 20);       //false
            System.out.println(10 != 20);       //true
        }
}

逻辑运算符

在数学中,一个数据,大于5,小于15,我们可以这样来进行表示:5<x<15

在java中,需要把上面的式子先进行拆解,再进行合并表达。

  • 拆解为: x>5和x<15
  • 合并后:x>5 & x<15

&其实就是一个逻辑运算符

我们可以这样说,逻辑运算符,是用来连接关系表达式的运算符

当然,逻辑运算符也可以直接连接布尔类型的常量或者变量
在这里插入图片描述

package test;
    /*
    * 逻辑运算符分类:
    * &(与):并且 : 并且,遇false则false,只有符号左右两边同时为true,结果才为true
    * !(或):或者 : 或者,遇true则true,只有符号左边两边同时为false,结果才为false
    * !(非):取反 : 取反
    * ^(异或): 相同为false,不同为true
    * */
public class code07 {
    public static void main(String[] args) {
        //&(与):并且
        System.out.println(true & true);    //true
        System.out.println(false & false);  //false
        System.out.println(true & true);    //true
        System.out.println(false & false);  //false
        System.out.println("-----------------------");
        // |(或):或者
        System.out.println(true | true);    //true
        System.out.println(false | false);  //false
        System.out.println(true | false);   //true
        System.out.println(false | true);
        System.out.println("-----------------------");
        // !(非):取反
        System.out.println(!true);          //false
        System.out.println(!!true);         //true
        System.out.println("-----------------------");
        // ^(异或):
        System.out.println(true ^ true);    //false
        System.out.println(false ^ false);  //false
        System.out.println(true ^ false);   //true
        System.out.println(false ^ true);   //true
    }
}

短路逻辑运算符

在这里插入图片描述

  • 注意事项
    • 逻辑与&,无论左边真假,右边都要执行
    • 短路与&&,如果走边为真,走边执行;如果左边为假,右边不执行。
    • 逻辑或|,无论左边真假,右边都要执行
    • 逻辑或||,如果左边为假,右边执行;如果左边为真,右边不执行

三元运算符

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

1、三元(目)运算符的格式:(关系运算符) ?表达式1 :表达式2

根据关系运算符的结果,来判断,如果关系运算符的结果为true,则值为表达式1,否则为表达式2。

2、用三元表达:式取两个数最大值

public static void main(String[] args){
int x = 10;
int y = 5;
int z;
z = (x > y) ? x : y;
System.out.println(z);	//10

3、案例:比较两个整数是否相同:

public static void main(String[] args){
int x = 10;
int y = 5;
String b = (x == y) ? "相等" : "不相等";
System.out.println(b);	//不相等
}

4、案例:比较三个整数中的最大值:

public static void main(String[] args){
int x = 10;
int y = 5;
int z = 15;
int t = (x > y) ? x : y;
int m = (t > z) ? t : z;
System.out.println(m);
}

案例练习

三个和尚练习题

在这里插入图片描述

分析:

定义三个变量用于保存和尚身高,单位为cm,这里仅仅体现数值即可

  • int height1 = 150
  • int height2 = 210
  • int height3 = 165

用三元运算符,比较前两个变量,获取较大值

  • int tempHeight = (height1 > height2)? height1 : height2;

用三元运算符,让较大值和第三个变量比较,获取最大值。
代码

package code1;

import java.util.Scanner;

class code2 {
    /*
    步骤1:导包,需要写在class的上面
    import java.util.Scanner;
    步骤2:创建对象
    Scaner sc = new Scanner(System.in);
            只有SC可以改变,其他属于固定模式
    步骤3:使用变量接受数据
    int i = SC.nextInt();
      只有变量可以改变其他属于固定模式
     */
    public static void main(String[] args) {
        Scanner SC = new Scanner(System.in);   //创建键盘录入对象
        //键盘录入练习:键盘录入两个数据,获取这两个数据中的最大值

        System.out.println("请输入第一个整数:");

        int a = SC.nextInt();      //将键盘录入的数据存储到i中

        System.out.println("请输入第二个整数:");
        int b = SC.nextInt();      //将键盘录入的数据存储到a中

        System.out.println("请输入第三个整数:");
        int c = SC.nextInt();

        int t = (a > b) ? a : b;
        int max = (c > b) ? c : a;
        System.out.println("max="+max);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值