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


相关文章
|
4月前
|
Java Go 开发工具
【Java】(4)五种运算符的说明(&&、||、>=、>、<=、<)、4种控制语句(if、for、while、dowhile)、输入和输出说明
扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的的类型byte类型,无论怎么进行加或追减,最终该变量的数据类型还是byte类型。注:一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给a。并且,连接运算之后的结果还是一个字符串类型。表达式1 : 表达式2。
191 1
|
11月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
218 13
|
6月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
Java
Java运算符
Java运算符
125 12
|
8月前
|
人工智能 Java
Java运算符中的隐式转换
本文介绍了 Java 运算符中的隐式类型转换规则,涵盖算数、逻辑、位、关系、赋值及其他运算符。重点分析了算数和位运算符在处理小于 int 位长的数据时会自动转换为 int 类型的特性,并通过代码示例说明可能引发的类型不匹配错误。逻辑、关系、赋值及其他运算符则不涉及类型转换。总结指出,部分运算符在计算时会将小位长数据隐式转为 int 类型,结果也为 int。
|
8月前
|
人工智能 Rust Java
Java中的算数、关系、逻辑、条件、赋值 五大运算符详解
本文介绍了Java中的运算符及其优先级,包括算数运算符(如+、-、*、/、%、++、--)、关系运算符(如&lt;、&gt;、==、!=)、逻辑运算符(如&&、||、!)、条件运算符(三目运算符)和赋值运算符(如=、+=、-=等)。详细解释了每种运算符的功能与用法,例如自增自减运算符的特点、逻辑运算符的短路法运算以及位运算符的操作规则。最后还提供了运算符优先级表格,帮助开发者理解复杂表达式的计算顺序。文中提醒,在实际开发中,建议使用括号明确运算顺序以提高代码可读性。
411 0
|
11月前
|
Java
课时15:Java运算符(基础数学运算符)
课时15介绍了Java中的基础数学运算符,涵盖加、减、乘、除及自增自减运算。强调了运算符的优先级和使用括号的重要性,并通过范例展示了四则运算与自增自减的具体应用。提醒编写代码时应保持简洁,避免复杂的表达式,确保代码易读性和可维护性。
167 7
|
11月前
|
SQL IDE 算法
《从头开始学java,一天一个知识点》之:运算符与表达式:算术、比较和逻辑运算
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」,每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《控制流程:if-else条件语句实战》。
267 6
|
11月前
|
Java
课时17:Java运算符(关系运算符)
范例:进行关系判断。如果要进行关系运算的操作可使用:>、<、>=、<=、!=(不等于)、==。所有的关系运算符判断完成的数据返回结果都是布尔类型(boolean)。只要使用关系运算符进行逻辑判断,最终的结果就是布尔型,只有true和false两种结果,而且能和if语句结合使用。
219 6
|
11月前
|
Java
课时16:Java运算符(三目运算符)
范例:将两个变量值在大的内容赋值给新变量。三目是一种赋值运算,它指的是根据条件来进行判断。(根据判断的结果来决定赋值内容)对于三目运算的基本使用语法如下: 数据类型 变量 = 布尔表达式 ?条件满足时赋值内容:条件不满足时:赋值内容
223 6