Java入门(二)

本文详细介绍了Java中的运算符,包括算术、关系、逻辑、位运算符以及移位运算,强调了前置和后置自增/自减的区别。此外,还概述了Java的关键字,如访问权限修饰符、类与函数修饰符、类间关系关键字等,并讨论了程序逻辑控制结构,如分支结构和循环结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中的运算符

1.算术运算符

基本四则运算符+ - * / %

规则比较简单,值得注意:

  1. int类型/ int类型结果还是 int,需要使用 double 来计算。如图
    在这里插入图片描述
    运行结果如下:
    在这里插入图片描述

  2. 0 不能作为除数
    当0做除数时,会发生运行时异常(也称非受查异常)。
    在这里插入图片描述
    运行结果如下
    在这里插入图片描述

  3. % 表示取余
    不仅仅可以对 int 求模,也能对 double 来求模。
    在这里插入图片描述
    运行结果如下
    在这里插入图片描述

增量赋值运算符 += -= *= /= %=

在这里插入图片描述
运行结果如下
在这里插入图片描述
其他增量赋值运算符相类似。

自增/自减运算符 ++ –

需要注意的是前置(后置)自增/自减
前置自增/自减,如下
在这里插入图片描述
运行结果如下
在这里插入图片描述
后置自增/自减,如下
在这里插入图片描述
运行结果如下
在这里插入图片描述

我们不难发现,前置自增/自减,先进行赋值,后再进行运算;
而后置自增/自减,先进行运算,后再赋值。
与C语言不同的是如下情况
在这里插入图片描述
它的运行结果如下
在这里插入图片描述
这一点是需要我们注意的。
小结:

  1. 如果不取自增运算的表达式的返回值,则前置自增和后置自增没有区别。
  2. 如果取表达式的返回值,则前置自增的返回值是自增之后的值,后置自增的返回值是自增之前的值。

2.关系运算符

关系运算符主要有六个==、 !=、 < 、>、 <=、 >=。
注意,Java中,关系运算符的表达式返回值都是boolean类型( true 或者 false )。这是与C语言有所不同的。
例如:
在这里插入图片描述
运行结果如下
在这里插入图片描述

3.逻辑运算符

逻辑运算符主要有三个:&&、||、! 。
注意,逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean类型

逻辑与 &&

规则:两个操作数都为 true,结果为 true,否则结果为 false 。

逻辑或 ||

规则:两个操作数都为 false,结果为 false,否则结果为 true。

逻辑非 !

规则:操作数为 true,结果为 false;操作数为 false,结果为 true(这是个单目运算符,只有一个操作数)。
在这里插入图片描述
运行结果如下
在这里插入图片描述
在这里,&& 和 || 遵守短路求值的规则,对于 &&,如果左侧表达式值为 false,则表达式的整体的值一定是 false,无需计算右侧表达式。同理,对于 ||,如果左侧表达式值为 true,则表达式的整体的值一定是 true,无需计算右侧表达式。

& 和 | (不推荐使用)

& 和 | 如果操作数为 boolean 的时候,也表示逻辑运算,但是和 && 以及 || 相比,它们不支持短路求值。

4.位运算符

Java 中对数据的操作的最小单位不是字节,而是二进制位。位运算符主要有四个: & 、 | 、 ~ 、 ^

按位与 &

如果两个二进制位都是 1,则结果为 1,否则结果为 0 。

按位或 |

如果两个二进制位都是 0,则结果为 0,否则结果为 1 。
在这里插入图片描述
运行结果如下
在这里插入图片描述
其原因如下图所示
在这里插入图片描述

按位取反 ~

如果该位为 0 则转为 1,如果该位为 1 则转为 0 。
在这里插入图片描述
运行结果如下
在这里插入图片描述
分析如下图
在这里插入图片描述
注意:

  1. 0x 前缀的数字为 十六进制 数字。十六进制可以看成是二进制的简化表示方式。一个十六进制数字对应 4 个二进制位。
  2. 0xf 表示 10 进制的 15,也就是二进制的 1111。
  3. printf 能够格式化输出内容,%x 表示按照十六进制输出。
  4. \n 表示换行符。

按位异或 ^

如果两个数字的二进制位相同,则结果为 0,相异则结果为 1。
在这里插入图片描述
运行结果如下
在这里插入图片描述
其原因是,1的二进制表示为 0 1,2的二进制表示为 1 0。进行按位异或^运算,其结果二进制表示为 1 1 ,按照十六进制输出为3。

5.移位运算(了解)

移位运算符有三个: << 、 >> 、 >>> 。它们都是按照二进制位来运算的。

左移 <<

最左侧位不要了,最右侧补 0 。

右移 >>

最右侧位不要了,最左侧补符号位(正数补0,负数补1)。

无符号右移 >>>

最右侧位不要了, 最左侧补 0 。
在这里插入图片描述
运行结果如下
在这里插入图片描述
原因如下
在这里插入图片描述
注意:

  1. 左移 1 位,相当于原数字×2。左移 N 位,相当于原数字×2 的N次方。
  2. 右移 1 位,相当于原数字÷2。右移 N 位,相当于原数字÷2 的N次方。
  3. 由于计算机计算移位效率高于计算乘除,当某个代码正好乘除 2 的N次方的时候可以用移位运算代替。
  4. 移动负数位或者移位位数过大都没有意义。

6.条件运算符

也叫三目运算符,只有一个:
表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时,整个表达式的值为 表达式2 的值;当 表达式1 的值为 false 时,整个表达式的值为 表达式3 的值。
例如,两个数中的较大的数。
在这里插入图片描述
运行结果如下
在这里插入图片描述

这样,我们很轻松地就求取了两数中的较大值。

7.运算符的优先级

运算符之间是有优先级的,具体的规则我在这里也不赘述了,也不必记忆。只要在可能存在歧义的代码中加上括号即可。

8.小结

  1. % 操作再 Java 中也能针对 double 来计算。
  2. 需要区分清楚前置自增和后置自增之间的区别。
  3. 由于 Java 是强类型语言,因此对于类型检查较严格,因此像 && 之类的运算操作数必须是 boolean类型。
  4. 要区分清楚 & 和 | 什么时候是表示按位运算,什么时候表示逻辑运算。
    整体来看,Java 的运算符的基本规则和 C 语言基本一致。

典型例题

一.交换两个整数的值。在这里为大家提供三种方法。
方法一,使用中间变量。这也是最普遍的方法。

public class TestDemo {
   
   
    public static void main(String[] args) {
   
   
        int a = 10;
        int b = 20;
        int temp = a;//引入中间变量
        a = b;
        b =<
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值