【自学Java】Java运算符

news2024/11/16 22:00:37

Java运算符

Java运算符

Java 程序是由许多语句组成的,而语句的基本操作单位是表达式与运算符。运算符就是数学中的运算符号,如 +-*/ 等等。

Java 中提供了许多的运算符,这些运算除了可以处理一般的数学运算外,还可以处理逻辑运算、位运算。根据使用的作用不同,运算符可以分为赋值运算符、算数运算符、关系运算符、逻辑运算符、条件运算符和括号运算符等等。

Java赋值运算符号

想要为各种不同的数据类型的变量赋值时,就必须要用赋值运算符 = ,在 Java 中赋值运算符就只有一个,它是 Java 语言中不可或缺的。

下列为赋值运算符成员:

赋值运算符号描述
=赋值

在这里 = 不是 “等于” 的意思,而是 “赋值” 的意思。赋值语句如下:

int num = 20 ;

Java一元运算符

一元运算符就只需要一个操作数。下面的语句就表示由一元运算符与一个操作数组成:

+3; //表示正数3
-4; //表示负数4
!a; //表示 a 的 NOT 运算,如果 a 为 0,则 !a 为 1,如果 a 不为 0,则 !a 为 0

下面是一元运算符成员:

序号一元运算符描述
1+正号
2-负号
3!NOT,否

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");

        boolean b = false;
        int x = 10 ;
        int y = -30;

        System.out.println("b = " + b + ",!b = " + !b);
        System.out.println("x = " + x + ",-x = " + -x);
        System.out.println("y = " + y + ",+y = " + +y);

    }
}

运算效果如下:

请添加图片描述

从上面可以看出,b 的初始值为 false,经过 ! 运算,b 值变为了 true。

Java算术运算符

算数运算符在数学中经常用到,它的成员列表为:

序号算数运算符描述
1+加法
2-减法
3*乘法
4/除法
5%取余数

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");
        int num1 = 20;
        int num2 = 5;

        System.out.println("num1 + num2 = "  + (num1 + num2));
        System.out.println("num1 * num2 = " + (num1 * num2));
        System.out.println("num1 - num2 =" + (num1 - num2));
        System.out.println("num1 / num2 = " + (num1 / num2));
        System.out.println("num1 % num2 = " + (num1 % num2));

    }
}

运算结果如下:

请添加图片描述

从运行结果可以看出和我们在数学中的加减乘除的效果是一样的。

Java关系运算符

使用关系运算符得出的结果是 boolean 类型的。它的表示方式和数学中差不多,但是由于 = 号是赋值语句,为了区分所以使用了 ==。而不等于形式比较特别,所以就用了 != 来表示。 通常在条件判断是时候用到。它的成员列表为:

序号关系运算符描述
1>大于
2<小于
3>=大于等于
4<=小于等于
5==等于
6!=不等于

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");

        System.out.println("2 > 1 : "  + (2 > 1));
        System.out.println("2 < 1 : " + (2 < 1));
        System.out.println("2 >= 1  : " + (2 >= 1));
        System.out.println("2 <= 1 : " + (2 <= 1));
        System.out.println("2 == 1 : " + (2 == 1));
        System.out.println("2 != 1 : " + (2 != 1));

    }
}

运行结果如下:

请添加图片描述

Java自增与自减运算符

自增自减运算符是对一个数据类型的数据进行操作,自增和自减会对被操作的数据加 1 或者 减 1。它的成员列表如下:

序号自增与自减运算符描述
1++自增,变量值加1
2自减,变量值减1

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");

        int num1 = 5;
        int num2 = 6;
        int num3 = 7;
        int num4 = 8;

        // 自增自减运算符在后面
        System.out.println("num1 = "  + num1);
        System.out.println("num1++ = " + (num1++) +"; num1 = " + num1);

        System.out.println("num2 = " + num2);
        System.out.println("num2-- = " + (num2--) +"; num2 = " + num2);


        //自增自减运算符在前面
        System.out.println("num3 = " + num3);
        System.out.println("++num3 = " + (++num3) +"; num3 = " + num3);

        System.out.println("num4 = " + num4);
        System.out.println("--num4 = " + (--num4) +"; num4 = " + num4);

    }
}

运行效果如下:

请添加图片描述

从运行结果中,我们可以看到,数据最终得到了我们想要的值,但是自增运算符放在前面和后面结果是有差异的。++-- 相当于给之前的值 +1 或者 -1

++ 放前面表示先进行 +1 操作,再进行赋值操作,++ 放在后面表示先进行赋值操作,再进行 +1 操作。所以我们看到结果中,会存在输出的值和之前的值相同的场景,但是再将原先的变量输出,结果就变成了预期的结果。

Java逻辑运算符

逻辑运算符可以链接多个逻辑运算,逻辑运算符的成员列表如下:

序号逻辑运算符描述
1&AND,与
2&&短路与
3OR,或
4||短路或

在使用逻辑运算符 && 时,如果在两边的运算都是真,那么就返回真,如果有一个为假就返回假,在 || 中,判断条件如果有一个为真,那么结果就为真,如果全部是假,那么结果才为假。

既然已经有了与和或了,那么为什么还需要短路与和短路或呢?因为 &&|| 是需要将所有的判断条件都执行的,而短路与在执行过程中,如果遇到一个假,那么它后面的判断逻辑就不会继续执行,直接返回假。短路或如果在判断时候遇到一个真,那么就返回真,不会继续执行后面的判断逻辑。

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");

        boolean flag1 = true;
        boolean flag2 = false;

        System.out.println("true && false = " + (flag1 && flag2) );
        System.out.println("true || false = " + (flag1 || flag2) );
        System.out.println("true & false = " + (flag1 & flag2) );
        System.out.println("true | false = " + (flag1 | flag2) );
        System.out.println("true && true = " + (flag1 && flag1) );
        System.out.println("false || false = " + (flag2 || flag2) );

    }
}

运行结果如下:

请添加图片描述

Java括号运算符

括号运算符是 Java 中最常用的运算符,它是优先级比较高的运算符,一般被括号包扩的运算符会首先执行。括号运算符的成员列表如下:

序号括号运算符描述
1()小括号
2[]大括号

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");

        int num1 = 10;
        int num2 = 5;

        System.out.println("num2 + num1 / num2 = " + (num2 + num1 / num2)); 
        System.out.println("(num2 + num1) / num2 = " + ((num2 + num1) / num2));

    }
}

运行结果如下;

请添加图片描述

我们可以看到一开始的时候,是按照数学里面的计算逻辑,先乘除后加减,然后用括号包起来后,顺序就先执行括号里面的。

Java位运算符

在 Java 中位运算符主要针对二进制,它包括了 异或。位运算符的成员列表如下:

序号位运算符描述
1&
2^异或
3
4

案例

package com.haicoder.net.basic;

public class OperatorTest {
    public static void main(String[] args) {
        System.out.println("嗨客网(www.haicoder.net)");

        int num1 = 10; // 二进制 1010
        int num2 = 5; // 二进制  0101

        System.out.println("num2  & num2  = " + (num1 & num2)); //0000
        System.out.println("num1 | num2 =  " + (num1 | num2));  //1111
        System.out.println("~num1 = " + (~num1));               
        System.out.println("num1 ^ num2 = " + (num1 ^ num2));   //1111
    }
}

运行结果如下:

请添加图片描述

我们可以看到除了 的运算超过我们的预期,其他的操作都是在预期之内。

操作符描述
&位数都是 1 返回 1,有 0 返回 0 。
遇到 1 返回 1,都是 0 返回 0。
^如果相同则为 0 ,不同则为 1。
取反运算符。

~ 在 Java 中,所有数据的表示方法都是以补码的形式表示,如果没有特殊说明,Java 中的数据类型默认是 int, int 数据类型的长度是 8 位,一位是四个字节,就是 32 字节,32 bit。10 的二进制 1010。补码后为:

00000000 00000000 00000000 00001010

取反为:

11111111 11111111 11111111 11110101

因为高位是 1 ,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加 1。因此,我们可将这个二进制数的补码进行还原: 首先,末尾减 1 得反码:11111111 11111111 11111111 11110100。

其次,将各位取反得原码:00000000 00000000 00000000 00001011,得到的二进制为 11。再对其取反得 -11。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/134112.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android---AndroidX

目录 Android 支持库 Android Support Library AndroidX 如何迁移老项目到 AndroidX? 支持库的作用 Android 支持库 Android 支持库是每个Android 应用程序中必不可少的一部分&#xff0c;你会发现它们无处不在。支持库为开发人员提供了将 Android 的最新和最强大功能添加…

《最重要的事,只有一件》笔记——目标不是做得更多,而是让自己需要的事情更少

目录 一、引言 二、书中摘要 1、只做一件事、一次只做一件事 2、专心于一件事不那么容易 3、我们不可能同时专注于两件事 4、平衡工作与生活是无稽之谈 5、怎么做 6、成功的习惯-围绕着你的终极目标 7、找到投入的意义 8、确定优先事务-这要看你目前和将来的打算 9、…

【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器

FLAN: 微调语言模型是Zero-Shot学习器《Finetuned Language Models are Zero-shot Learners》论文地址&#xff1a;https://arxiv.org/abs/2109.01652 相关博客 【自然语言处理】【ChatGPT系列】FLAN&#xff1a;微调语言模型是Zero-Shot学习器 【自然语言处理】【ChatGPT系列】…

R语言geodetector包基于栅格图像实现地理探测器操作

本文介绍基于R语言中的geodetector包&#xff0c;依据多张栅格图像数据&#xff0c;实现地理探测器&#xff08;Geodetector&#xff09;操作的详细方法。 需要说明的是&#xff0c;在R语言中进行地理探测器操作&#xff0c;可以分别通过geodetector包、GD包等2个包实现。其中&…

react18+eslint+prettier 配置

新建项目 create-react-app.cmd react18 --template typescript配置别名 安装 craco npm install craco/craco -D新建 craco.config.js const path require("path"); const resolve (dir) > path.resolve(__dirname, dir); module.exports {// 配置别名web…

Kubernetes:Service

文章目录1、Service 定义1.1、无选择符的服务1.2、Endpoints2、服务发布类型2.1、ClusterIP2.2、NodePort2.3、ExternalName2.4、loadbalancer3、无头服务3.1、有选择符的服务3.2、无选择符的服务4、服务发现4.1、环境变量4.2、DNS5、Service TLSService&#xff1a;将运行在一…

力扣(LeetCode)1801. 积压订单中的订单总数(C++)

优先队列模拟 根据题目描述模拟。 如果该订单是一笔采购订单 buy &#xff0c;则可以查看积压订单中价格 最低 的销售订单 sell 。提示我们&#xff0c;建立小根堆&#xff0c;维护价格最低的销售订单sell 。 反之亦然&#xff0c;如果该订单是一笔销售订单 sell &#xff0c;…

【技术分享】戴尔工作站安装Win10+Ubuntu20.04双系统教程与避坑指南

文章目录引言1.安装前的几个注意事项&#xff08;避坑指南&#xff09;1.1.有多块硬盘&#xff0c;该如何分配给Win10和Ubuntu系统&#xff1f;1.2.Ubuntu分区应该怎么分&#xff1f;2.系统安装步骤2.1.下载系统镜像2.2.制作U盘启动盘2.3.进入Win10系统分配系统空间2.4.BIOS设置…

强力推荐:关于谷歌ChatGPT模型140个示例的展示与实现功能

目录 1、ChatGPT 介绍与使用简要介绍安装ChatGPT与使用想写出有效的问答吗?使用 ChatGPT 桌面应用程序使用 prompts.chat2、ChatGPT模型140个示例充当 Linux 终端充当英语翻译和改进者担任`position`面试官充当 JavaScript 控制台充当 Excel 工作表充当英语发音帮手充当旅游指…

【C++】bitset(位图)的模拟实现

目录 一、bitset接口介绍 二、bitset的实现 1. 构造函数 2. 设置位&#xff08;set&#xff09; 3. 清空位&#xff08;reset&#xff09; 4. 获取位的状态&#xff08;test&#xff09; 三、源代码 一、bitset接口介绍 #include <iostream> #include <vecto…

Fujian Medical insurance and pension for urban and rural residents

【城乡居民医保、养老】二维码缴纳步骤&#xff0c;本文仅仅辅助需要人士&#xff0c;可忽略 第一步&#xff0c;长按二维码 第二步&#xff0c;点击【识别图中二维码】 第三步&#xff1a;个人社&#xff08;医&#xff09;保办费页面&#xff0c;点击【个人社&#xff08;医&…

一次 SQL 查询优化原理分析

一&#xff0c;前言 证实 参考资料 有一张财务流水表&#xff0c;未分库分表&#xff0c;目前的数据量为9555695&#xff0c;分页查询使用到了limit&#xff0c;优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms)&#xff0c;按照下文的方式调整SQL…

连接表「INNER JOIN」「LEFT JOIN」「RIGHT JOIN」+ 多表查询

目录表关联执行顺序 及 原理第一步、做笛卡尔积第二步&#xff1a;根据ON后的连接条件筛选笛卡尔积的结果第三步&#xff1a;补充左表&#xff08;LEFT JOIN&#xff09;或右表&#xff08;RIGHT JOIN&#xff09;不满足连接条件的数据&#xff08;INNER JOIN内关联时无此步骤&…

CMOS门电路总结

目录 MOS管&#xff1a; CMOS组成的常见门电路 反相器&#xff08;非门&#xff09;&#xff1a; 与非门 或非门 OD门 三态门 MOS管简介&#xff1a; > NMOS: 漏极&#xff08;D&#xff09;入&#xff0c;源极&#xff08;S&#xff09;出&#xff0c;栅极(G)加正电压…

【MyBatis】级联处理、association、collection、分布查询(详细模板,可直接套用)

目录 示例 一、处理“多对一”映射关系 1.1、级联查询 1.2、association 1.3、分步查询 二、处理“一对多”映射关系 2.1、collection 2.2、分步查询 示例 例如&#xff1a;员工与部门表 员工&#xff1a; 部门&#xff1a; 解释&#xff1a; 两张表通过dept_id联系起来…

ubuntu22.04安装MySQL、Hive及Hive连接MySQL操作

前言 这篇文章主要讲述的是ubuntu22.04上数据仓库Hive的安装和使用 正文 建议按照文章实践前稍微通读下全文 安装MySQL服务端和客户端 相关命令&#xff1a; sudo apt-get install mysql-server sudo apt-get install mysql-client 修改mysql的配置文件 在终端中输入…

手撕LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…

python虚拟环境的概念,操作(pycharm为例)

1.在PyCharm中创建python项目时&#xff0c;需要配置python的运行环境&#xff0c;除了使用系统现有环境以外&#xff0c;还可以创建虚拟环境。 2.虚拟环境的创建是因为在实际开发中需要同期用到不同版本的python解释器&#xff0c;不同的第三方库以及同一个第三方库的不同版本…

牛客网 字符串通配符

做题链接&#xff1a;字符串通配符__牛客网 (nowcoder.com)要求&#xff1a;实现如下2个通配符(不区分大小写)&#xff1a; * &#xff1a;匹配0个或以上的字符&#xff08;注&#xff1a;能被*和?匹配的字符仅由英文字母和数字0到9组成&#xff0c;下同&#xff09;&#…

【回看2022 展望2023】一个普通大学生的2022回忆录

目录 一、前言 二、回望2022 2022年1月 2022年2月 2022年3月 2022年4月5月6月7月8月 2022年9月 2022年10月 2022年11月 2022年12月 三、总结与期望 结语 期望 一、前言 虽然我在csdn上已经有2年的码龄了&#xff0c;但我是从2021年4月才开始写我的第一篇博客。其实从学…