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的运算符

一、自增自减

1.后增:

先备份, 后自加 ,x 最终结果为 1。

 int x = 1;
 x = x ++;  
 System.out.println("x = 1,执行 x = x++ 后的结果为:"+ x);	//结果为 1

2.先增:

先自加 ,后备份,y 最终结果为 2。

int y = 1;
y = ++ y;   
System.out.println("y = 1,执行 y = ++y 后的结果为:"+ y);		//结果为 2

3.多个变量 ,自增、自减 的 混合运算:

int m = 1;
int n = 2;
int sum = m++ + ++n - n-- - --m + n-- - --m;
System.out.println("m=1,n=2,执行 sum = m++ + ++n - n-- - --m + n-- - --m 后:");
System.out.println("m = "+ m);   //m=0
System.out.println("n = "+ n);   //n=1
System.out.println("sun = "+ sum);//sum=2

4. “a += 2” 和 “a = a + 2” 的区别 :

会报错 ,如图:
在这里插入图片描述
正确写法 ,如下:
在这里插入图片描述

二、逻辑运算

‘&&’ 和 ‘&’ , 以及 ‘||’ 和 ‘|’

相同点: 单符号逻辑运算符 和 双符号逻辑运算符 的运算结果相同。
不同点: 双符号运算时,若第一个表达式的结果可以确定最终结果,就直接返回结果。

例:

System.out.println("(3>2) && (3>4)的结果为:"+ ( (3>2) && (3>4) ) );	//结果为:false
System.out.println("(3>2) &  (3>4)的结果为:"+ ( (3>2) &  (3>4) ) );	//结果为:false
System.out.println("(3>2) || (3>4)的结果为:"+ ( (3>2) || (3>4) ) );	//结果为:true
System.out.println("(3>2) |  (3>4)的结果为:"+ ( (3>2) |  (3>4) ) );	//结果为:true

三、位运算

位运算 的 运算方式:
将 操作数 变为 二进制数 补码, 然后 逐位运算,
最后将 二进制结果 转换为 十进制真值 返回。

例:

System.out.println("- 3 & 7 的结果为: "+ ( -3 & 7 ) );	//结果为:+5
System.out.println("- 3 | 7 的结果为: "+ ( -3 | 7 ) );	//结果为:-1
System.out.println("- 3 ^ 7 的结果为: "+ ( -3 ^ 7 ) );	//结果为:-6
System.out.println("- 3 按位非运算 的结果为:"+ (~ -3));	//结果为:+2

解释说明:

-3 的 二进制数为:1 011,补码 为:1 101;
7 的 二进制数 为:0 111,补码 为:0 111。
二者补码分别为: 1 101 和 0 111
按位 与 运算,结果为:0 101(补码)
按位 或 运算,结果为:1 111 (补码)
按位 与运算 和 按位 或运算 的真值分别为:
与运算 结果:0 101(补码)——> 0 101(原码)——> +5(真值)
或运算 结果:1 111(补码)——> 1 001(原码)——> - 1(真值)
二者 异或:
结果 为 : 1 010(补码)——> 1 110(原码)——> - 6(真值)
-3 的 非运算:
-3 的 二进制数为: 1 011,
补码 为:1 101,按位取非后 为: 0 010 。
故:0 010(补码)——> 0 010(原码)——> +2(真值)

四、移位运算

运算方式:

无论正负,计算机均存储该数据的 补码形式。

  • 1>.左移 运算符 << :最后面 补0, 返回结果 等于原数 乘以 2。
  • 2>.右移 运算符 >> :最前面 补符号位,返回结果 等于原数 除以 2。
  • 3>.无符号右移 >>> :最前面 均 补0。

例:

System.out.println("-8 <<  1 = "+ ( -8 << 1) );	//结果为:-16
System.out.println("-8 >>  1 = "+ ( -8 >> 1) );	//结果为:-4
System.out.println("-8 >>> 1 = "+ ( -8 >>> 1));	//结果为:+2147483644

五、程序源码

public static void main(String[] args) {

        /**
         * 1. 自增运算
         */
        int x = 1;
        x = x ++;   //先备份,后自加,x最终结果为1。
        System.out.println("x = 1,执行 x = x++ 后的结果为:"+ x);

        int y = 1;
        y = ++ y;   //先自加,后备份,y最终结果为2。
        System.out.println("y = 1,执行 y = ++y 后的结果为:"+ y);


        /**
         * 2. 多个变量 自增、自减 的 混合运算
         */
        int m = 1;
        int n = 2;
        int sum = m++ + ++n - n-- - --m + n-- - --m;
        System.out.println("\nm=1,n=2,执行 sum = m++ + ++n - n-- - --m + n-- - --m 后:");
        System.out.println("m = "+ m);   //m=0
        System.out.println("n = "+ n);   //n=1
        System.out.println("sun = "+ sum);//sum=2

        /**
         * 3.  “a += 2” 和  “a = a + 2” 的区别
         */
        byte a = 1;
        a += 2;
        a = (byte) (a + 2);//不强制转换,会被报错
        System.out.println(a);


        /**
         * 4.  逻辑运算。
         * '&&' 和 '&' , 以及 '||' 和 '|'
         * 相同点: 单符号逻辑运算符 和 双符号逻辑运算符 的运算结果相同。
         * 不同点: 双符号运算时,若第一个表达式的结果可以确定最终结果,就直接返回结果。
         */
        System.out.println("(3>2) && (3>4)的结果为:"+ ( (3>2) && (3>4) ) );
        System.out.println("(3>2) &  (3>4)的结果为:"+ ( (3>2) &  (3>4) ) );
        System.out.println("(3>2) || (3>4)的结果为:"+ ( (3>2) || (3>4) ) );
        System.out.println("(3>2) |  (3>4)的结果为:"+ ( (3>2) |  (3>4) ) + "\n");


        /**
         * 5.位运算:
         * 是将操作数变为 二进制数 补码, 然后 逐位运算,
         * 最后将 二进制结果 转换为 十进制真值 返回。
         */

        /**
         * 解释说明:
         * -3 的 二进制数 为:1 011,补码 为:1 101;
         *  7 的 二进制数 为:0 111,补码 为:0 111。
         *  二者补码分别为:     1 101    和       0 111
         *
         * 按位 与 运算,结果为:0 101(补码)
         * 按位 或 运算,结果为:1 111 (补码)
         * 按位 与运算 和 按位 或运算 的真值分别为:
         * 与运算 结果:0 101(补码)——> 0 101(原码)——> +5(真值)
         * 或运算 结果:1 111(补码)——> 1 001(原码)——> - 1(真值)
         *
         * 二者 异或:
         * 结果 为 : 1 010(补码)——> 1 110(原码)——> - 6(真值)
         *
         * -3 的 非运算:
         * -3 的 二进制数为: 1 011,
         * 补码 为:1 101,按位取非后 为: 0 010 。
         * 故:0 010(补码)——> 0 010(原码)——> +2(真值)
         */
        System.out.println("- 3 & 7 的结果为: "+ ( -3 & 7 ) );//结果为:+5
        System.out.println("- 3 | 7 的结果为: "+ ( -3 | 7 ) );//结果为:-1
        System.out.println("- 3 ^ 7 的结果为: "+ ( -3 ^ 7 ) );//结果为:-6
        System.out.println("- 3 按位非运算 的结果为:"+ (~ -3) + "\n");//结果为:+2


        /**
         * 6. 移位运算:
         * 无论正负,计算机均存储该数据的 补码形式。
         * 1>.左移 运算符  <<  : 最后面 补0,    返回结果 等于原数 乘以 2。
         * 2>.右移 运算符  >>  : 最前面 补符号位,返回结果 等于原数 除以 2。
         * 3>.无符号右移  >>>  : 最前面 均 补0。
         */
        System.out.println("-8 <<  1 = "+ ( -8 << 1) );//结果为:-16
        System.out.println("-8 >>  1 = "+ ( -8 >> 1) );//结果为:-4
        System.out.println("-8 >>> 1 = "+ ( -8 >>> 1));//结果为:+2147483644

    }
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 11:51:51  更:2021-08-07 11:52:53 
 
开发: 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年5日历 -2024/5/10 6:41:47-

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