IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 初识Java(三)----- Java中的运算符 -> 正文阅读

[Java知识库]初识Java(三)----- Java中的运算符

目录

一、算术运算符

二、复合赋值运算符

三、自增、自减运算符

四、关系运算符

五、逻辑运算符

六、位运算符

七、移位运算符

八、条件运算符

九、运算符的优先级

十、Java中的注释

十二、Java中的关键字

十三、总结


一、算术运算符

  • ? +(加)? -(减)? *(乘)? /(除)? %(取模)

👀 +(加)-(减)*(乘)与数学中的类似,这里就不过多的叙述了。

1、/ (除法): 得到的是商

  • 🍓当? /(除号)两端都是整数时,执行的是整数除法,整数除法得到的结果是整数部分,小数部分直接舍去。
  • 🍓两端只要有一个浮点数,执行的就是浮点数的除法。
public  class TestDemo {
    public static void main(String[] args) {

        System.out.println(1 / 2);
        System.out.println(1.0/2);
    }
}

运行结果

🍓0不能做除数

  • Java中有很多异常,后面会慢慢介绍。

2、% (取模): 得到的是相除之后的余数

🍓 Java中不仅可以对 int 取模, 也能对 double 来取模。

public  class TestDemo {
    public static void main(String[] args) {
        System.out.println(-10%3);
        System.out.println(10%-3);
        System.out.println(-10%-3);
        System.out.println(13.5%3);
    }
}

运行结果


二、复合赋值运算符

  • ? +=:加等? ? -=:减等? ? *= :乘等 ? /=:除等 ? %=:取模等

🍉 这几个运算符与C语言中的复合运算符使用一样,但需要注意:

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        a+=1; //a = a + 1;
        System.out.println(a);
    }
}

运行结果

💥 下面这段代码是将int类型的数据与short类型的数据相加,将结果赋给short类型,所以会报错。

🎄 使用复合运算符就不会报错,使用复合运算符会自动进行强制类型转换。

public  class TestDemo {
    public static void main(String[] args) {
       short  a = 20;
        a+=1; //a = a + 1;
        System.out.println(a);
    }
}

运行结果


三、自增、自减运算符

🍉 ++、-- 运算符与C语言中的复合运算符使用一样。

💎 前置++:先++,后使用

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int i1 = ++a;  // a = a+1;  i1 = a;
        System.out.println(a);
        System.out.println(i1);
    }
}

运行结果

💎 后置++:先使用,后++

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int i1 = a++; // i1 = a; a = a+1;
        System.out.println(a);
        System.out.println(i1);
    }
}

运行结果

💎 前置--:先--,后使用

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int i1 = --a; //a = a-1;  i1 = a;
        System.out.println(a);
        System.out.println(i1);
    }
}

运行结果

💎 后置--:先使用,再--

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int i1 = a--; // i1 = a; a = a-1;
        System.out.println(a);
        System.out.println(i1);
    }
}

运行结果

? 结论:

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

四、关系运算符

  • ? >:大于???????????? ? <:小于???????????? ? ==:等于
  • ? >=:大于等于 ?? ? <=:小于等于??? ? !=:不等于 ??????
public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a == b); //false
        System.out.println(a != b); //true
        System.out.println(a < b); //true
        System.out.println(a > b); //false
        System.out.println(a <= b); //true
        System.out.println(a >= b); //false
    }
}

运行结果

🍓 关系运算符的表达式返回值都是 boolean 类型,结果不是 true 就是 false。


五、逻辑运算符

  • ? &&:逻辑与 ?????? ? ||:逻辑或?????????!:逻辑非

🌊 &&(逻辑与):

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println(a < b && b > c); //false
    }
}

? 结论:?

  • 表达式 1 && 表达式 2 :两个表达式都是布尔表达式。
  • 短路:如果表达式 1为假就不执行表达式 2。
  • 两个表达式全为真,整个表达式才为真(true)。

🌊 ||(逻辑或):

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println(a < b || b > c); //true
    }
}

运行结果

? 结论:??

  • 表达式 1 || 表达式 2 :两个表达式都是布尔表达式。
  • 短路:如果表达式 1为真就不执行表达式 2。
  • 只要有一个表达式为真,整个表达式就为真(true)。

🌊 !(逻辑非):

public  class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(!(a < b)); //false
        System.out.println(!!(a < b)); //true
        // System.out.println(!a < b); //error 逻辑操作符的表达式必须是布尔表达式
    }
}

运行结果

? 结论:???

  • !布尔表达式
  • !false = true
  • ! true = false

🍓 短路求值

  • && 和 || 遵守短路求值的规则。
public  class TestDemo {
    public static void main(String[] args) {
        // 10>20 为假,所以不会执行&&后面的表达式
        System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
        //10<20 为真,所以不会执行 || 后面的表达式
        System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
    }
}

💥 计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.

? 结论:???

  1. 对于 && , 如果左侧表达式值为 false, 则表达式的整体的值一定是 false, 无需计算右侧表达式
  2. 对于 || , 如果左侧表达式值为 true, 则表达式的整体的值一定是 true, 无需计算右侧表达式.

🌀 & 和 | (不推荐使用)

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

六、位运算符

🍓 Java 中对数据的操作的最小单位不是字节, 而是二进制位.

  • ? &:按位与 ? |:按位或 ? ^:按位异或 ? ~:按位取反

🌊 位操作表示按二进制位运算。计算机中都是使用二进制来表示数据的(0、1构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算。

1、按(2进制)位与:&

? 规则:两个二进制数,有0则为0,全1则为1。

public class TestDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 5;

        int c = a & b;
        System.out.println(c);
    }
}

运行结果

2、按(2进制)位或:|

? 规则:两个二进制数,有1则为1,全0则为0。

public class TestDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 5;

        int c = a | b;
        System.out.println(c);
    }
}

运行结果

💥 注意:

  • 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算。

3、按(2进制)位异或:^

? 规则:两个二进制数,相同为0,相异为1。

public class TestDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 5;

        int c = a ^ b;
        System.out.println(c);
    }
}

?运行结果

?4、~ 按(二进制)位取反

? 规则:该位为 0 则变为 1, 该位为 1 则变为 0。

public class TestDemo {
    public static void main(String[] args) {
        int a = 0xf;
        System.out.printf("%x\n", ~a);
    }
}

运行结果

💥 注意:

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

七、移位运算符

  • ? <<:左移 ? >>:右移 ? >>>:无符号右移

🍓 左移 <<: 最左侧位不要了, 最右侧补 0

public class TestDemo {
    public static void main(String[] args) {
        int a = 3;
        System.out.println(a<<1); //左移1位
    }
}

🍓 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

public class TestDemo {
    public static void main(String[] args) {
        int a = 3;
        System.out.println(a>>1); //右移1位
    }
}

🍓 无符号右移 >>>: 最右侧位不要了, 最左侧补 0。

public class TestDemo {
    public static void main(String[] args) {
        int a = -3;
        System.out.println(a>>>1); //右移1位
    }
}

运行结果

💥 注意:

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

八、条件运算符

🍓 表达式1 ? 表达式2 : 表达式3

  • 表达式1是一个布尔表达式。表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值。

? Java 中唯一的一个三目运算符, 是条件判断语句的简化写法.

public class TestDemo {
    public static void main(String[] args) {
        // 求两个整数的最大值
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println(max);
    }
}

?九、运算符的优先级

🍉 Java中的运算符优先级与C语言一样,这里就不详细说明了。

优先级运算符结合性
1

()

括号运算符从左到右
2

!、+(正号)、-(负号)

一元运算符从左到右
3

~

位逻辑运算符从右到左
4

++、--

自增自减运算符从右到左
5

*、/、%

算术运算符从左到右
6

+、-

算术运算符从左到右
7

<<、>>、>>>

移位运算符从左到右
8

>、>=、<、<=

关系运算符从左到右
9

==、!=

关系运算符从左到右
10

&

位运算符、逻辑运算符从左到右
11

^

位运算符、逻辑运算符从左到右
12|位运算符、逻辑运算符从左到右
13

&&

逻辑运算符从左到右
14||逻辑运算符从左到右
15

?:

条件运算符从右到左
16

=、+=、-=、*=、/=、%=

关系运算符从右到左

? 运算符之间是有优先级的, 具体的规则我们不必记忆,在可能存在歧义的代码中加上括号即可。

🎄 总结

  • % 操作再 Java 中也能针对 double 来计算.
  • 需要区分清楚前置自增 和 后置自增之间的区别.
  • 由于 Java 是强类型语言, 因此对于类型检查较严格, 因此像 && 之类的运算操作数必须是 boolean.
  • 要区分清楚 & 和 | 什么时候是表示按位运算, 什么时候表示逻辑运算.

?十、Java中的注释

  • 注释是为了让代码更容易被读懂而附加的描述信息. 不参与编译运行, 但是却非常重要.
  • 时刻牢记! 代码写出来是为了给人看的, 更是为了给三个月后的你自己看的.

🍓 基本规则

  • 单行注释:// 注释内容(用的最多)
  • 多行注释:/* 注释内容*/(不推荐)
  • 文档注释: /** 文档注释 */(常见于方法和类之上描述方法和类的作用),可用来自动生成文档

🍓 注释规范

  • 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
  • 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
  • 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
  • 积极向上: 注释中不要包含负能量。

十二、Java中的关键字


十三、总结

详细介绍了Java中的运算符及使用方式,整体来看, Java 的运算符的基本规则和 C 语言基本一致!文章最后补充了Java中的注释与关键字。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:16:56  更:2022-02-26 11:20:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:34:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码