滚雪球学Java(09):运算符、表达式和语句

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 【2月更文挑战第6天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

在这里插入图片描述


🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!


@[toc]

前言

在学习Java中,运算符、表达式和语句是非常重要的概念。只有掌握了这些基础知识,才能编写出高效、优质的Java代码。在本篇文章中,将介绍Java运算符、表达式和语句的基础概念,以及它们的使用方法和注意事项。

摘要

在Java中,运算符、表达式和语句是编写程序的基础。本文介绍了Java中各种常见运算符的使用方法、表达式的构成方式,以及一些常见的语句类型。在编写Java程序时,请注意运算符和表达式的优先级,以及语句的执行顺序。使用本文所介绍的知识,可以编写出高效、稳定的Java程序。

内容

运算符

Java中的运算符包括算术运算符、位运算符、关系运算符、逻辑运算符等。下面分别介绍这些运算符的基础概念和使用方法。

算术运算符

算术运算符包括加、减、乘、除、取余数等。下面列出了Java中常用的算术运算符:

+  加法运算符
-  减法运算符
*  乘法运算符
/  除法运算符
%  取余数运算符

算术运算符可以用于数值类型的变量,例如int、double等。在使用除法运算符/时要注意除数不能为0,否则程序会抛出异常。

位运算符

位运算符是将数据按位进行运算的运算符。在Java中,可以使用以下位运算符:

&  按位与
|  按位或
^  按位异或
~  按位取反
<< 左移运算符
>> 右移运算符(带符号)
>>>右移运算符(不带符号)

位运算符可以用于整型、长整型、短整型、字符型数据类型中。其中,左移运算符<<将数据向左移动指定的位数,右移运算符>>将数据向右移动指定的位数。注意,右移运算符>>是带符号的,意味着对于正数数据会在左侧补0,而对于负数数据会在左侧补1,因此有可能改变原有数据的正负性。而右移运算符>>>则是不带符号的,不考虑数据的正负性。

关系运算符

关系运算符用于比较两个变量的值是否相等,或大小关系。Java中常用的关系运算符包括:

==  相等运算符
!=  不相等运算符
>   大于运算符
>=  大于等于运算符
<   小于运算符
<=  小于等于运算符

关系运算符通常用于if语句、while语句、for语句等条件判断语句中。

逻辑运算符

逻辑运算符用于对两个或多个boolean变量进行逻辑运算。Java中常用的逻辑运算符包括:

!   非运算符
&&  与运算符
||  或运算符

逻辑运算符通常用于条件判断语句中,例如if语句、while语句等。注意,逻辑运算符具有短路特性,即若第一个运算数已经能够确定整个表达式的值,则不会计算第二个运算数。

赋值运算符

赋值运算符用于将一个变量的值赋给另一个变量。Java中常用的赋值运算符包括:

=   简单赋值运算符
+=  加等于运算符
-=  减等于运算符
*=  乘等于运算符
/=  除等于运算符
%=  取余等于运算符
<<= 左移等于运算符
>>= 右移等于运算符
&=  按位与等于运算符
^=  按位异或等于运算符
|=  按位或等于运算符

表达式

在Java中,表达式是由运算符、操作数和操作符所组成的式子。在编写程序时,表达式是非常常见的代码形式。下面介绍一些常见的表达式类型。

算术表达式

算术表达式是由算术运算符、操作数和括号所组成的式子。例如:

int a = 5;
int b = 3;
int c = a + b * 2;  // c的值为11

在算术表达式中,加减运算符会先于乘除运算符计算,而括号中的计算会优先于其他运算。

关系表达式

关系表达式是由关系运算符、操作数和括号所组成的式子。例如:

int a = 5;
int b = 3;
boolean c = a > b;  // c的值为true

在关系表达式中,运算结果为boolean类型(true或false)。

逻辑表达式

逻辑表达式是由逻辑运算符、操作数和括号所组成的式子。例如:

int a = 5;
int b = 3;
boolean c = (a > b) && (a < 10);  // c的值为true

在逻辑表达式中,运算结果为boolean类型(true或false)。

赋值表达式

赋值表达式是由赋值运算符、操作数和括号所组成的式子。例如:

int a = 5;
a += 3;  // a的值为8

在赋值表达式中,赋值运算符将右侧的值赋给左侧的变量。

语句

顺序语句

顺序语句是按照代码的编写顺序依次执行的语句。例如:

int x = 1;
int y = 2;
int z = x + y;
System.out.println(z);

在这个例子中,变量 xy 的值被相加,并把结果存储在变量 z 中。然后,z 的值被打印出来。

分支语句

分支语句使程序在不同的条件下执行不同的代码。常见的分支语句有 ifswitch 语句。

if 语句

if 语句的基本语法如下:

if (condition) {
   
   
    // Code to be executed if the condition is true
}

例如,我们可以使用 if 语句来判断一个数是否为正数:

int x = 5;
if (x > 0) {
   
   
    System.out.println("x is a positive number");
}

如果变量 x 的值大于 0,那么 println 语句就会被执行。

我们也可以在 if 语句中使用 else 子句来执行另一段代码:

int x = -5;
if (x > 0) {
   
   
    System.out.println("x is a positive number");
} else {
   
   
    System.out.println("x is not a positive number");
}

在这个例子中,当变量 x 的值小于等于 0 时,会执行 else 子句中的代码。
代码解析:

  代码中定义了一个整数变量x,并将其赋值为-5。然后使用if-else语句来判断x的值是否大于0。由于x的值为-5,不满足大于0的条件,所以执行else语句块的代码,输出结果为"x is not a positive number"。

switch 语句

switch 语句根据一个表达式的值来执行不同的代码块。它的语法如下:

switch (expression) {
   
   
    case value1:
        // Code to be executed if expression matches value1
        break;
    case value2:
        // Code to be executed if expression matches value2
        break;
    ...
    default:
        // Code to be executed if expression doesn't match any value
}

例如,我们可以使用 switch 语句来判断一个数字的大小:

int x = 3;
switch (x) {
   
   
    case 1:
        System.out.println("x is one");
        break;
    case 2:
        System.out.println("x is two");
        break;
    case 3:
        System.out.println("x is three");
        break;
    default:
        System.out.println("x is not one, two or three");
}

在这个例子中,当变量 x 的值为 3 时,会执行 case 3 中的代码。

代码解析:

  这段代码使用了Java中的switch语句来根据变量x的值执行不同的代码块。

首先,在程序开始处定义了一个整数变量x并赋值为3。
然后,使用switch语句判断x的值。

根据x的值,程序会执行对应的case语句块。这里x的值是3,所以会执行case 3的语句块。

case 3语句块中的代码是打印字符串"x is three"。然后使用break语句来跳出switch语句。

因此,当运行这段代码时,控制台会输出"x is three"。

循环语句

循环语句用于重复执行一段代码。常见的循环语句有 forwhiledo-while 循环。

for 循环

for 循环的基本语法如下:

for (initialization; condition; update) {
   
   
    // Code to be executed in each iteration
}

例如,我们可以使用 for 循环来计算 1~10 的和:

int sum = 0;
for (int i = 1; i <= 10; i++) {
   
   
    sum += i;
}
System.out.println("Sum of 1 to 10 is " + sum);

在这个例子中,变量 sum 初始值为 0。在每次循环中,变量 i 的值从 1 开始增加,直到达到 10。在每次循环中,变量 i 的值都会被加到 sum 中。最后,变量 sum 的值被打印出来。

代码解析:

  这段代码的目的是计算并输出从1到10的所有整数的总和。

首先,创建一个整数变量sum,并将其初始化为0。

然后,使用for循环从1到10遍历所有整数。循环变量i从1开始,每次循环结束后增加1,直到i等于10。

在每次循环中,将i的值加到sum变量上。

循环结束后,使用System.out.println()方法打印输出结果。将字符串"Sum of 1 to 10 is "与sum的值连接起来输出。

最终的输出结果将是"Sum of 1 to 10 is 55"。因为从1到10的所有整数的总和是55。

while 循环

while 循环的基本语法如下:

while (condition) {
   
   
    // Code to be executed in each iteration
}

例如,我们可以使用 while 循环来打印 1~5:

int i = 1;
while (i <= 5) {
   
   
    System.out.println(i);
    i++;
}

在这个例子中,变量 i 的值从 1 开始增加,直到达到 5,每次循环中都会打印出变量 i 的值。

代码解析:

  这段代码使用了一个while循环来打印从1到5的数字。首先,在循环开始之前,将变量i初始化为1。然后,循环条件检查i是否小于等于5,如果是,则执行循环体内的代码。在循环体内,打印当前的i的值,并将i的值增加1。然后,循环再次检查循环条件,如果满足则继续执行循环体内的代码。当i的值增加到6时,不满足循环条件,循环终止。因此,这段代码将会输出以下结果:

1
2
3
4
5

do-while 循环

do-while 循环与 while 循环类似,只是它会在执行循环体之前先执行一次循环条件判断。它的基本语法如下:

do {
   
   
    // Code to be executed in each iteration
} while (condition);

例如,我们可以使用 do-while 循环来打印 1~5:

int i = 1;
do {
   
   
    System.out.println(i);
    i++;
} while (i <= 5);

在这个例子中,变量 i 的值从 1 开始增加,直到达到 5,每次循环中都会打印出变量 i 的值。

代码解析:

  这段代码的作用是打印1到5的数字。

解析:

  1. 初始化一个变量i为1。
  2. 进入do-while循环,先执行循环体内的代码,打印出i的值。
  3. 执行完循环体内的代码后,将i的值加1。
  4. 判断i是否小于等于5,如果是,则继续执行循环体内的代码,否则跳出循环。
  5. 重复步骤2到4,直到i的值大于5,循环结束。

因此,这段代码会依次打印出1、2、3、4、5。

跳转语句

跳转语句允许我们跳转到程序的其他部分。Java 中的跳转语句有 breakcontinuereturn

break 语句

break 语句用于跳出循环或者 switch 语句。例如:

for (int i = 0; i < 10; i++) {
   
   
    System.out.println(i);
    if (i == 5) {
   
   
        break;
    }
}

在这个例子中,当变量 i 的值为 5 时,会执行 break 语句并跳出循环。

代码解析:

  这段代码是一个简单的循环语句,用于打印从0到9的数字。代码解析如下:

  • 循环开始时,将变量i初始化为0。
  • 在每次循环迭代中,首先打印变量i的值。
  • 接下来,使用一个条件判断语句检查变量i是否等于5。
  • 如果变量i等于5,那么执行break语句,意味着跳出循环。
  • 如果变量i不等于5,那么继续循环。
  • 在每次循环迭代结束时,将变量i的值增加1。
  • 当变量i达到5时,循环终止,并且不会再进入下一次迭代。
  • 最后,程序结束。

因此,运行这段代码会输出以下结果:

0
1
2
3
4
5

continue 语句

continue 语句用于跳过循环中的某一次迭代。例如:

for (int i = 0; i < 10; i++) {
   
   
    if (i == 5) {
   
   
        continue;
    }
    System.out.println(i);
}

在这个例子中,当变量 i 的值为 5 时,会跳过循环中的代码并进行下一次循环。

代码解析:

  这段代码使用了一个for循环,循环条件是i小于10。每次循环开始时,先判断i是否等于5,如果是,则执行continue语句,跳过本次循环的剩余代码,直接进入下一次循环。如果i不等于5,则执行System.out.println(i)语句,打印当前的i的值。这段代码的输出结果将是:
0
1
2
3
4
6
7
8
9

return 语句

return 语句用于从方法中返回值。例如:

public int add(int x, int y) {
   
   
    return x + y;
}

在这个例子中,方法 add 接收两个参数 xy,并返回它们的和。

代码解析:

  这段代码是一个简单的Java方法,名为add,其返回类型为int。它接受两个int类型的参数x和y,并返回它们的和。

具体解析如下:

  1. public int add(int x, int y):这是方法的声明部分。关键字public表示该方法可以被其他类访问。int表示返回类型,即该方法返回一个int值。add是方法的名字,后面的括号内是参数列表。在这个例子中,有两个参数:一个是名为x的int型参数,另一个是名为y的int型参数。

  2. { :这个左花括号标志着方法体的开始。

  3. return x + y;:这是方法体内的主要代码。return关键字用于将结果返回给调用该方法的地方。本例中,该方法返回x和y的和。x和y相加的结果将作为返回值。

  4. }:这个右花括号标志着方法体的结束。

  注意,这段代码仅仅是一个方法的定义,并没有调用该方法。要使用这个方法,需要在另一个类或方法中进行调用。

测试用例

以下是一个测试用例,用于测试 for 循环:

@Test
public void testForLoop() {
   
   
    int sum = 0;
    for (int i = 1; i <= 10; i++) {
   
   
        sum += i;
    }
    assertEquals(55, sum);
}

在这个测试用例中,我们使用 for 循环来计算 1~10 的和,并断言结果是否为 55。

代码解析:

  这段代码是一个测试方法,用于测试一个 for 循环的功能。

首先,定义了一个 int 类型的变量 sum 并初始化为 0。

然后,使用 for 循环语句,设置循环变量 i 的初始值为 1,循环条件为 i 小于等于 10。循环体内,将 i 的值累加到 sum 上。

最后,使用断言语句 assertEquals(),判断 sum 的值是否等于 55。如果相等,则测试通过,否则测试失败。

总之,这段代码的目的是测试一个 for 循环的功能,计算从 1 到 10 的整数的和,并判断结果是否为 55。

全文小结

Java中的运算符、表达式和语句是程序中必不可少的元素,下面是它们的一些概述:

运算符:

  • Java的运算符包括算术运算符、比较运算符、逻辑运算符、位运算符等。
  • 位运算符可以直接操作二进制数,对于一些需要直接操作二进制数的问题,使用位运算符可以提高效率。

表达式:

  • 表达式是由运算符和操作数构成的序列,可以用来计算出一个值。
  • Java中的表达式可以由常量、变量、运算符和方法调用等组成。
  • 在Java中,表达式的类型必须与所赋值的变量类型兼容。

语句:

  • Java中的语句用于控制程序的执行流程,包括条件语句、循环语句、跳转语句等。
  • 条件语句用于根据条件的真假来决定程序的执行流程,包括if语句、switch语句等。
  • 循环语句用于重复执行某个代码块,包括for循环、while循环、do-while循环等。
  • 跳转语句用于改变程序的执行流程,包括break、continue和return语句。

综上所述,运算符、表达式和语句是Java程序中必不可少的元素,对于Java程序员来说,掌握它们的特性和使用方法是非常重要的。

附录源码

  如上涉及所有源码均已上传同步在Gitee,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你


  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

📣关于我


我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

目录
相关文章
|
2月前
|
存储 Java
java中的常见运算符的计算方式
本文介绍了计算机中二进制数的原码、反码和补码的概念及其转换方式。原码是符号位加真值的绝对值;反码中正数不变,负数其余位取反;补码在反码基础上加1。文章还详细解释了Java中的常见运算符(如按位与、或、异或、移位等)如何基于二进制进行计算,并探讨了使用补码的原因,包括统一符号位处理和扩展表示范围。通过具体代码示例帮助理解这些概念。
java中的常见运算符的计算方式
|
2月前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。
|
2月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
3月前
|
安全 Java API
Java中的Lambda表达式与Stream API的高效结合####
探索Java编程中Lambda表达式与Stream API如何携手并进,提升数据处理效率,实现代码简洁性与功能性的双重飞跃。 ####
44 0
|
3月前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
3月前
|
并行计算 Java 编译器
深入理解Java中的Lambda表达式
在Java 8中引入的Lambda表达式,不仅简化了代码编写,还提升了代码可读性。本文将带你探索Lambda表达式背后的逻辑与原理,通过实例展示如何高效利用这一特性优化你的程序。
|
3月前
|
搜索推荐 Java API
探索Java中的Lambda表达式
本文将深入探讨Java 8引入的Lambda表达式,这一特性极大地简化了代码编写,提高了程序的可读性。通过实例分析,我们将了解Lambda表达式的基本概念、使用场景以及如何优雅地重构传统代码。文章不仅适合初学者,也能帮助有经验的开发者加深对Lambda表达式的理解。
|
4天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
49 14
|
7天前
|
安全 Java 程序员
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
38 13
|
8天前
|
安全 Java 开发者
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。