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

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

前言

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

一、运算符

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

🍑1、取模运算符%

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

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

System.out.println(11.5 % 2.0);

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

 public static void main(String[] args) {
        int m=10;
        int n=0;
        System.out.println(m%0);
        System.out.println(m/0);
    }

🍑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);
    }

注意3: 一段需要注意的代码

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

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

🍑3、逻辑运算符

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

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

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

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

对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.

对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.

& 和 | 如果表达式结果为 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); // 程序抛出异常
    }

🍑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));
}

注意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");
}

三、Java输入和输出

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

🍑1、输出到控制台

System.out.println(msg); // 输出一个字符串, 带换行
System.out.print(msg); // 输出一个字符串, 不带换行
System.out.printf(format, msg); // 格式化输出
  • 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();//还可以加一个这个关闭
    }
}

多组输入可以这样写:

 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
    while (sc.hasNextInt()) {
         int tmp = sc.nextInt();
         //功能语句……
    }
}

注意: 当循环输入多个数据的时候, 在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
}

四、猜数字游戏——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;
            }
        }

    }
}

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

总结

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


相关文章
|
3月前
|
Java
Java运算符
Java运算符
54 12
|
4月前
|
Java 测试技术 数据处理
Java零基础教学(17):Java运算符详解
【8月更文挑战第17天】Java零基础教学篇,手把手实践教学!
84 4
|
2月前
|
算法 Java 测试技术
🌟Java 零基础 | 详解 单目运算符
【10月更文挑战第14天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
54 7
|
2月前
|
Java 测试技术 开发者
🌟Java 零基础 | 深入理解三目运算符
【10月更文挑战第13天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
67 3
|
2月前
|
Java 测试技术 开发者
🌟Java零基础-Lambda运算符详解 🌟
【10月更文挑战第12天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
28 1
|
2月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
60 4
|
2月前
|
安全 Java 测试技术
🌟 Java 零基础 | 详解 instanceof 运算符
【10月更文挑战第1天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
54 1
|
2月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
46 3
|
2月前
|
Java C语言
【一步一步了解Java系列】:探索Java逻辑控制
【一步一步了解Java系列】:探索Java逻辑控制
30 1
|
3月前
|
Java
java基础(1)逻辑控制if、switch
本文继续介绍了Java中的基础逻辑控制语句,包括if-else语句和switch语句。文章通过示例代码展示了if-else语句如何根据条件判断执行不同的代码块,以及switch语句如何根据变量的值执行不同的case分支。还提供了一个使用Scanner类从键盘获取输入,并根据输入的数字输出对应的星期日的示例。最后提到了如何在IDEA中格式化代码。
37 2