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中的猜数字小游戏。本章内容不多,但笔者尽力做到句句重点,如有不足,敬请斧正!


相关文章
|
22天前
|
Java C++
Java基础之运算符
Java运算符包括算术、赋值、关系、逻辑、条件和类型等,如加减乘除、自增自减(前缀++n/后缀n++)、赋值(+/-/*/=等)、比较(==/!=/&gt;/&lt;等)、逻辑(&&/||/!)和三元运算符。自增前后缀的区别在于赋值顺序。初面常问:=与==的区别(赋值vs比较),==与equals()(引用vs内容比较),&&与&(短路逻辑与vs按位与)。
12 2
|
15天前
|
Java
哇塞!Java 基本语法的运算符,你真的懂了吗?算术运算符篇
【6月更文挑战第14天】Java中的算术运算符是编程基础,包括加法`+`(用于数字相加和字符串拼接)、减法`-`、乘法`*`、除法`/`(需防除数为零)和取余`%`。它们在计算位移、周期性问题等场景中广泛应用。理解并熟练掌握这些运算符,能提升编程效率和代码质量。现在就开始实践,发掘它们的更多可能性吧!
|
14天前
|
Java 程序员 API
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
[笔记] 疯狂JAVA讲义(第3版)第3章 数据类型和运算符
|
15天前
|
算法 Java
炸裂!Java 基本语法的运算符世界,等你来探索!算术运算符特辑
【6月更文挑战第14天】Java中的算术运算符是基础关键,如加法&quot;+&quot;用于数字相加和字符串拼接,减法&quot;-&quot;求差,乘法&quot;*&quot;相乘,除法&quot;/&quot;注意整数除法会舍去小数,浮点数则保留,取模&quot;%&quot;)返回除法余数。熟练掌握这些运算符能提升编程效率,构建复杂逻辑。继续探索Java运算符世界,创造更多精彩程序!
|
1天前
|
存储 Java
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
5 0
|
1天前
|
Java
Java中的左移运算符及其在实现加法效果上的应用
Java中的左移运算符及其在实现加法效果上的应用
6 0
|
2天前
|
存储 监控 Java
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
|
28天前
|
Java
JAVA运算符详解与实战应用
JAVA运算符详解与实战应用
19 3
|
29天前
|
Java 数据处理
Java的运算符与表达式详解
Java的运算符与表达式详解
20 1
|
29天前
|
Java
Java的运算符优先级判断
Java的运算符优先级判断