• Java中值得注意的『运算符、逻辑控制、输入输出』


    前言

    ​通过几天的学习,对于Java中的运算符与逻辑控制部分,总的来说:由于语言的相通性,知识点大体与C语言部分相差无几。所以对于这部分,笔者就不在一一介绍了,对于重复知识点会给出相应的C阶段博客链接,有兴趣的可以点击阅读。本章重点在于盘点Java中相对于C语言值得注意的地方。

    一、运算符

    在C语言阶段笔者已将C语言中的运算符进行了详细的介绍,Java中的运算符与C语言大体相同,在阅读本文之前可以了解一下:C语言操作符

    🍑1、取模运算符%

    注意1: Java中的%的操作数可以为整数也可以为浮点数

    在Java中 % 不仅可以对整型取模,也可以对double类型取模。当然,虽然Java语言支持这种写法,但是没有太大意义,一般都是对整型取模的。如写出如下代码:

    System.out.println(11.5 % 2.0);
    
    • 1

    ​注意2: 做除法-/和取模-%时,右操作数不能为0

     public static void main(String[] args) {
            int m=10;
            int n=0;
            System.out.println(m%0);
            System.out.println(m/0);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    🍑2、增量运算符

    形如:++--+=-=%=*=……
    注意1: 只有变量才能使用该运算符,常量不能使用。
    注意2: 增量运算符对于小于int类型会发生自动强转。

     public static void main(String[] args) {
            short sh=12;
            //sh=sh+2;
            //-->sh+2整形提升为int类型-->int类型赋值给short会报错,
            //如果赋值需要强转-->sh=*(short)(sh+2);
    
            sh++;
            sh+=2;//不会报错--理解自动进行了类型的转换
    
            System.out.println(sh);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11


    注意3: 一段需要注意的代码
    对于这段代码由于设计到Java的汇编,目前大家记忆即可:

    public static void main(String[] args) {
            int i=10;
            i=i++;//i最终是10
            System.out.println(i);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    🍑3、逻辑运算符

    即:逻辑与&&、逻辑或||、逻辑非

    注意1: 逻辑运算符的操作数和运算结果都是boolean类型

    对于Java中没有0为假,非0为真的概念。Java中真就是true,假就是false,因此逻辑运算符操作数和结果也只有true或false两种取值。

    注意2: &&||遵循短路求值

    1. 对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.
    2. 对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
    3. &| 如果表达式结果为 boolean 时, 也表示逻辑运算. 但与 && || 相比, 它们不支持短路求值。
    public static void main(String[] args) {
            System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
            System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
    
            System.out.println(10 > 20 & 10 / 0 == 0); // 程序抛出异常
            System.out.println(10 < 20 | 10 / 0 == 0); // 程序抛出异常
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    🍑4、位运算符

    注意1: 移位的作用和意义

    1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 *2 的N次方.
    2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 /2 的N次方.
    3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
    4. 移动负数位或者移位位数过大都没有意义.
    public static void main(String[] args) {
        System.out.println("-128右移1位后:"+(-128>>1));
        System.out.println("4左移1位后:"+(4<<1));
    }
    
    • 1
    • 2
    • 3
    • 4

    注意2: >><<>>>三种移位操作符的对比

    1. 左移<<:左边丢弃,右边补0
    2. 右移>>:右边丢弃,左边补符号位
    3. 无符号右移>>>:右边丢弃,左边补0

    二、逻辑控制语句

    🍑1、switch语句

    注意1: 多个case后的常量值不可以重复

    注意2: switch的括号内只能是以下类型的表达式:

    基本类型: byte、char、short、int,注意不能是long、double、float、boolean类型

    引用类型: String常量串、枚举类型

    注意3: switch 不能表达复杂的条件

    // 例如: 如果 num 的值在 10 到 20 之间, 就打印 Success
    // 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
    if (num > 10 && num < 20) {
       System.out.println("Sucess");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、Java输入和输出

    对于这部分大家简单了解,学会简单使用即可,一般在工程中很少用到,下面笔者就浅浅简单介绍一下👇:

    🍑1、输出到控制台

    System.out.println(msg); // 输出一个字符串, 带换行
    System.out.print(msg); // 输出一个字符串, 不带换行
    System.out.printf(format, msg); // 格式化输出
    
    • 1
    • 2
    • 3
    • println 输出的内容自带 \n, print 不带 \n
    • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.
    • 单独使用不加参数的System.out.println()表示换行.

    格式修饰符表:

    转换符类型举例输出
    d十进制整数(“%d”, 100)100
    x十六进制整数(“%x”, 100)64
    o八进制整数(“%o”, 100)144
    f定点浮点数(“%f”, 100f)100.000000
    e指数浮点数(“%e”, 100f)1.000000e+02
    g通用浮点数(“%g”, 100f)100.000
    a十六进制浮点数(“%a”, 100)0x1.9p6
    s字符串(“%s”, 100)100
    c字符(“%c”, ‘1’)1
    b布尔型(“%b”, 100)true
    h散列码(“%h”, 100)64
    %百分号(“%.2f%%”, 2/7f)0.29%

    🍑2、从键盘输入

    import java.util.Scanner;//需要导入包
    public class TestDemo {
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);//固定这样写
            int n= scan.nextInt();//表示读入一个 整数
            float nn=scan.nextFloat();//表示输入一个浮点数
            double nnf=scan.nextDouble();//表示输入一个双精度浮点数
            String nnn=scan.nextLine();//表示输入一个字符串
            String name=scan.next();//相较于nextline有一个很大的缺点,遇到空格就结束了
    
            scan.close();//还可以加一个这个关闭
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    多组输入可以这样写:

     public static void main(String[] args) {
     	Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
             int tmp = sc.nextInt();
             //功能语句……
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意: 当循环输入多个数据的时候, 在Windows的cmd上使用 ctrl + z 来结束输入 (Linux / Mac 上使用 ctrl + d)idea也使用ctrl+d结束输入。

    回车字符的处理:

    public static void main(String[] args) {
    	Scanner scan=new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age=scan.nextInt();
    
        //这样处理:
        scan.nextLine();
        //如果不处理,上边输入完成后回车会被下边读取到
        System.out.println("请输入名字:");
        String name=scan.nextLine();//会读取/n
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    四、猜数字游戏——Java实现

    import java.util.Random;
    import java.util.Scanner;
    public class TestDemo {
        //猜数字-Java版本
        public static void main(String[] args) {
            Scanner scan=new Scanner(System.in);
    
            Random random=new Random();//真随机
            int ranNum=random.nextInt(100);//表示0-100-[0,100)之间的数字
            //不能写1,应该写布尔表达式
            while(true) {
                System.out.print("请输入一个1-100之间的数字:>");
                int n= scan.nextInt();
                if(ranNum<n) {
                    System.out.println("猜大了!");
                }
                else if(ranNum>n) {
                    System.out.println("猜小了!");
                }
                else {
                    System.out.println("猜对了!");
                    break;
                }
            }
    
        }
    }
    
    • 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

    Java中使用Random生成随机数,同Scanner需要导入相应的包,现在仅需要记住相应的表达格式(对于这部分概念后面会具体介绍)。上面的猜数字游戏仅给出大体框架,如果想要继续完善,大家可以尽情发挥!大家也可以参考一下这篇:猜数字小游戏

    总结

    本章盘点了Java中需要注意的运算符、逻辑控制中的switch语句以及Java中的输入输出,最后使用以上知识点实现了Java中的猜数字小游戏。本章内容不多,但笔者尽力做到句句重点,如有不足,敬请斧正!

  • 相关阅读:
    【Python】
    浅谈2024 年 AI 辅助研发趋势!
    一百八十一、Hive——海豚调度HiveSQL任务时当Hive的计算引擎是mr或spark时脚本的区别(踩坑,附截图)
    webpack5 import动态导入实现按需加载并给文件统一命名
    表的增删改查
    【算能】麒麟系统reboot后报错:
    滑动窗口算法(C语言描述)
    关于lua源代码中的EXTRA_STACK宏
    最大公约数循环与递归版本
    Camtasia Studio 2024软件最新版下载【安装详细图文教程】
  • 原文地址:https://blog.csdn.net/LEE180501/article/details/127618834