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

news2025/2/24 14:59:51

目录

  • 前言
  • 一、运算符
    • 🍑1、取模运算符%
    • 🍑2、增量运算符
    • 🍑3、逻辑运算符
    • 🍑4、位运算符
  • 二、逻辑控制语句
    • 🍑1、switch语句
  • 三、Java输入和输出
    • 🍑1、输出到控制台
    • 🍑2、从键盘输入
  • 四、猜数字游戏——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: &&||遵循短路求值

  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); // 程序抛出异常
    }

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件过程与项目管理复习(1)

文章目录Week1Project Introduction定义特点Project management项目管理的价值项目管理的5要素Project manager项目经理的技能要求project manager 的核心任务&#xff08;key activities)规划 planning组织 organizing领导 leading掌控 controllingAgile Scrum master 的核心任…

结构体超详解(小白一看就懂,多维度分析!!!!)

目录 一、前言 二、结构体详解 &#x1f350;什么是结构体 &#x1f34e;结构体的定义与基础结构 &#x1f351;结构体的使用 &#x1f4a6;结构体的初始化 &#x1f4a6;结构体的成员访问 &#x1f4a6;结构体数组 &#x1f4a6;结构体指针--------------指向结构体变…

PNAS:人类头皮记录电位的时间尺度

导读 人类的许多行为都是由在不同时间尺度上发生的共同过程所支配的。标准的事件相关电位分析假设有关实验事件的响应持续时间是固定的。然而&#xff0c;最近对动物的单个单元记录显示&#xff0c;在需要灵活计时的行为中&#xff0c;神经活动尺度跨越了不同的持续时间。本研…

vue3——使用axios

1、Axios 是什么? 浏览器页面在向服务器请求数据时&#xff0c;因为返回的是整个页面的数据&#xff0c;页面都会强制刷新一下&#xff0c;这对于用户来讲并不是很友好。并且我们只是需要修改页面的部分数据&#xff0c;但是从服务器端发送的却是整个页面的数据&#xff0c;十…

Keras深度学习实战(33)——基于LSTM的序列预测模型

Keras深度学习实战&#xff08;33&#xff09;——基于LSTM的序列预测模型0. 前言1. 序列学习任务1.1 命名实体提取1.2 文本摘要1.3 机器翻译2. 从输出网络返回输出序列2.1 传统模型体系结构2.2 返回每个时间戳的网络中间状态序列2.3 使用双向 LSTM 网络小结系列链接0. 前言 在…

Qt易忘样式表总结

目录前言1、Qt设置样式的几种方式2、几种复合控件的样式设置QTableWidgetQCalendarWidgetQTreeWidgetQSpinBoxQComboBox前言 在使用Qt框架开发软件时&#xff0c;为了美观和更好的用户体验&#xff0c;需要为各种控件设置样式。一些通用且简单的样式如背景色、边框、字体字号等…

js实现图片懒加载

js实现图片懒加载 1、介绍getBoundingClientRect()函数 该函数没有参数&#xff0c;用于获取元素位置&#xff0c;返回一个对象&#xff0c;具有六个属性分别是&#xff1a; ele.getBoundingClientRect().top – 返回元素上边到视窗上边的距离 ele.getBoundingClientRect().l…

【经典面试题-LeetCode134:加油站问题(Java实现)】

加油站问题一、题目描述1.题目内容2.样例二、解决方案1.分析2.核心代码一、题目描述 1.题目内容 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i…

自动控制原理 - 2 控制系统的数学模型 节2.4-2.6

------------------------------------------------------------------------------ 2 控制系统的数学模型2.4 控制系统的传递函数2.5 典型环节的传递函数2.6 结构图的绘制 2 控制系统的数学模型 2.4 控制系统的传递函数 为何引入传递函数&#xff1f; 微分方程模型的优缺…

Webpack面试题总结

说说你对webpack的理解&#xff1f;解决了什么问题&#xff1f; webpack最初的目标是实现前端项目模块化&#xff0c;目的在于更高效的管理和维护项目中的每一个资源 模块化&#xff1a; 最早的时候&#xff0c;我们通过文件划分的形式实现模块化&#xff0c;也就是将每个功能…

JVM性能——开启回收日志和实时查看GC信息

JVM性能——开启回收日志和实时查看GC信息 JDK版本&#xff1a;OpenJDK 1.8.0_352-b08 操作系统&#xff1a;CentOS 7 如果文章内出现测试数据测试代码 depth:23 关于JVM的其他文章 JVM性能——垃圾回收器的优化策略 JVM性能——垃圾回收器的介绍 JVM性能——开启回收日…

网络赚钱项目 - 虚拟项目如何选择产品

今日一个老粉找我&#xff0c;他去年3月份就重视我跟我互动了&#xff0c;他上来并不是索取什么&#xff0c;而是给我信息&#xff0c;比如他最近测验了什么产品&#xff0c;什么产品好卖&#xff0c;都会把测验的数据告诉我&#xff0c;当然作为回报&#xff0c;我也会告诉他一…

Centos7宝塔部署python

前言&#xff1a;宝塔本身有python项目管理器&#xff0c;但是有些依赖安装会存在问题&#xff0c;比如paddlehub安装总是失败&#xff0c;本文在宝塔安装了anaconda基础上配合python项目管理器去部署项目&#xff0c;保障依赖隔离不混乱。 centos7宝塔安装conda流程地址&…

Linux使用YUM安装程序

目录 前言 什么是YUM&#xff1f; 1.本地源&#xff1a;系统安装光盘 目的 1&#xff09;观察YUM核心配置目录 2&#xff09;删除官方YUM库 3&#xff09;编写本地YUM库配置文件 4&#xff09;挂载安装光盘 保证把光盘放到服务器上&#xff0c;通电 挂载 5&#xff0…

np中的normalize/histogram/cumsum/interp函数

一、normalize函数 void normalize(InputArray src,OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() ) 归一化就是要把需要处理的数据经过处理后 (通过某种算法)限制在你需要的一定范围内。首先归一…

深入注册表监控

前言 注册表是windows的重要数据库&#xff0c;存放了很多重要的信息以及一些应用的设置&#xff0c;对注册表进行监控并防止篡改是十分有必要的。在64位系统下微软提供了CmRegisterCallback这个回调函数来实时监控注册表的操作&#xff0c;那么既然这里微软提供了这么一个方便…

用红黑树封装map和set

文章目录:红黑树模拟实现完整代码红黑树参数适配改造仿函数正向迭代器反向迭代器红黑树封装后的代码map完整代码set完整代码红黑树模拟实现完整代码 如下是红黑树kv模型的模拟实现完整代码&#xff0c;现在我们需要基于此代码封装出map和set基本的接口实现。 #pragma once #i…

音视频开发风潮 | 聊聊为啥从事音视频开发

音视频开发风潮 聊聊为啥从事音视频技术&#xff0c;未来会很赚钱 核心竞争力&#xff1a;音视频是程序界的皇冠&#xff0c;掌握音视频意味着拿到通往未来的船票&#xff0c;不用担心会被其他人替代。因为音视频是有一定门槛的&#xff0c;所以也是与其他人拉开差距的分水岭…

基于Linux的Spark安装与环境配置

文章目录基于Linux的Spark安装与环境配置1、Hadoop测试1.1 启动hadoop1.2 再次启动hadoop1.3 查看是否成功2、Scala安装与配置2.1 下载scala2.2 解压并重命名2.3 配置环境2.4 测试3、Spark安装与配置3.1 下载Spark3.2 解压并重命名3.3 配置环境3.4 配置spark-env.sh3.5 配置sla…

RabbitMQ中VirtualHost相关设置、SpringBoot中集成常见问题总结

wshanshi&#xff1a;总结记录…便于回顾… 一、VirtualHost相关设置 1.1、创建VirtualHost rabbitmqctl add_vhost 虚拟服务器名称如&#xff1a;rabbitmqctl add_vhost test 1.2、用户、权限相关设置 1.2.1、创建用户 rabbitmqctl add_user 用户名 密码如&#xff1a;ra…