Java运算符和表达式

Java运算符和表达式

和C语言一样,java也有基础的运算符和表达式,用来完成一些基础的数学计算,以及逻辑运算,我们一起来学习一下吧。

算数运算符 

首先,这个算数运算符与数学中即C语言的运算符的功能一样,利用这些基础操作符,可以完成一些基础的操作。

这里我给大家举一些简单的例子,帮助大家理解。

注意:

1)算数运算符的操作数必须是一个整型或浮点型变量。

2)用算数运算符和括号连接起来的符合Java语法规则的式子称为算术表达式,例如:a+2*b-3/(c%d)。

3)a++或a--表示在使用a之前,先使a的值增或减1;++a或--a表示在使用a之后,再使a的值增或减1。

例如:a的值为10,b=a++,b的值为10,而b=++a,b的值为11。

4)Java对加法运算符进行了扩展,使它能够进行字符串的连接,例如:“abc”+“def”会得到字符串“abcdef”。

这里主要给大家强调最后一点,在以后java的学习中,我们经常会见到这种相加的操作,希望大家可以牢记这个知识点。

public class Main {public static void main(String[] args) {int a = 5;int b = 10;int c = 15;int d = 20;System.out.println("a + b = " + (a + b) );System.out.println("a - b = " + (a - b) );System.out.println("a * b = " + (a * b) );System.out.println("b / a = " + (b / a) );System.out.println("b % a = " + (b % a) );System.out.println("a++ = " + (a++) );System.out.println("a-- = " + (a--) );System.out.println("d++ = " + (d++) );System.out.println("++d = " + (++d) );}
}

运行结果如下:

a + b = 15
a - b = -5
a * b = 50
b / a = 2
b % a = 0
a++   = 5
a--   = 6
d++   = 20
++d   = 22

Java关系运算符实例讲解

 关系运算符,实际与C语言的语法也是十分相似的。

关系运算符用来比较两个值的关系,其运算结果是boolean型,当运算符对应的关系成立是,运算结果真为true,假为false

这就是它与C语言不同的地方,这里希望大家可以对比记忆,牢记java关系运算符的特点。

这里还是给大家举一些例子:

实例 :

public class Main {public static void main(String[] args) {int a = 5;int b = 10;System.out.println("a == b = " + (a == b) );System.out.println("a != b = " + (a != b) );System.out.println("a > b = " + (a > b) );System.out.println("a < b = " + (a < b) );System.out.println("a >= b = " + (a >= b) );System.out.println("a <= b = " + (a <= b) );}
}

运行结果如下:

a == b = false
a != b = true
a > b = false
a < b = true
a >= b = false
a <= b = true

所以关系运算符的最终结果只有两种:false,true。

Java逻辑运算符实例讲解

这里还是一样,我们还是将注意力主要放到与C语言不同的地方。

首先,这是一个双目运算符,他的两个操作符必须都是boolean型,这里必须给大家强调这一点。

 

实例:

public class Main {public static void main(String[] args) {boolean a = true;boolean b = false;System.out.println("a && b = " + (a&&b));System.out.println("a || b = " + (a||b) );System.out.println("!(a && b) = " + !(a && b));}
}

 运行结果如下:

a && b = false
a || b = true
!(a && b) = true

Java位运算符实例讲解

Java定义的位运算应用于整数类型,如int,long,short,char 和 byte等。

位运算符主要用来对操作数二进制的位进行运算,按位运算表示按每个二进制位进行计算,其操作数和运算结果都是整型值,若运算结果为负数,则采用补码表示。

Java 语言中的位运算符分为位逻辑运算符和位移运算符两类。

这里面的与或非,和我们高中数学里面的与或非一样,与运算即两个操作符都为真结果才为真,或运算即一个为真结果就为真,非即假为真,真为假,具体大家可以搜一下真值表查看。

按位异或运算:

按位异或运算对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则为:如果a、b两个数据对应位相同,则c的该位是0,否则是1。

例如:

a:0 1 0 1 0 0 1 1

b:0 0 1 1 1 0 1 0

c:0 1 1 0 1 0 0 1

 

按位右移运算:

按位右移运算的运算法则为:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。

例如:将整数 83 向右位移 1 位

移位前:0 1 0 1 0 0 1 1

移位后:0 0 1 0 1 0 0 1

按位左移运算:

按位左移运算的运算法则为:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

例如:将整数 83 向左位移 1 位

移位前:0 1 0 1 0 0 1 1

移位后:1 0 1 0 0 1 1 0

实例:

public class Main {public static void main(String[] args) {int a = 83; /* 83 = 01010011 */int b = 58; /* 58 = 00111010 */int c = 0;c = a & b; /* 18 = 00010010 */System.out.println("a & b = " + c );c = a | b; /* 123 = 01111011 */System.out.println("a | b = " + c );c = ~a; /* 01010011取反后为10101100,10101100的补码为11010100,-84 = 11010100 */System.out.println("~a = " + c );c = a ^ b; /* 105 = 01101001 */System.out.println("a ^ b = " + c );c = a >> 1; /* 41 = 00101001 */System.out.println("a >> 2  = " + c );c = a << 1; /* 166 = 10100110 */System.out.println("a << 2 = " + c );}
}

 运行结果:

a & b = 18
a | b = 123
~a = -84
a ^ b = 105
a >> 2  = 41
a << 2 = 166

Java赋值运算符实例讲解

这个就与C语言的语法大同小异了。这里我们强调:

赋值运算符左面的操作数必须是变量,不能是常量或表达式,赋值表达式的值就是=左面变量的值。

这里给大家一个小技巧,写==操作符时我们可以把常量放到==的左侧,如果误写为=, 编译器会报错。

public class Main {public static void main(String[] args) {int a = 1;int b = 2;int c = 0;c = a + b;System.out.println("c = a + b = " + c );c += a ;System.out.println("c += a = " + c );c -= a ;System.out.println("c -= a = " + c );c *= a ;System.out.println("c *= a = " + c );a = 3;c = 4;c /= a ;System.out.println("c /= a = " + c );a = 5;c = 6;c %= a ;System.out.println("c %= a = " + c );c &= a ;System.out.println("c &= a = " + c );c |= a ;System.out.println("c |= a = " + c );c ^= a ;System.out.println("c ^= a = " + c );c >>= 1 ;System.out.println("c >>= 1 = " + c );c <<= 1 ;System.out.println("c <<= 1 = " + c );}
}

运行结果:

c = a + b = 3
c += a = 4
c -= a = 3
c *= a = 3
c /= a = 1
c %= a = 1
c &= a = 1
c |= a = 5
c ^= a = 0
c >>= 1 = 0
c <<= 1 = 0

Java条件运算符实例讲解

即三目操作符,与C语言一样,具体概念:

条件运算符(?:)是三目运算符,所谓“目”,是指这个运算符参与运算的对象个数,也就是说,条件运算符有三个操作数。

这里强调表达式1必须为boolean类型 

public class Main {public static void main(String[] args){int a , b;a = 1;b = (a == 1) ? 2 : 3; // 如果a等于1成立,则设置b的值为2,否则为3System.out.println( "Value of b is : " + b );b = (a == 10) ? 2 : 3; // 如果a等于10成立,则设置b的值为2,否则为3System.out.println( "Value of b is : " + b );}
}

运行结果:

Value of b is : 2
Value of b is : 3

Java instanceof运算符实例讲解

这个操作符是C语言中没有见过的,我们这里简单学习一下:

instanceof运算符左面的操作数是一个对象,右面的操作数是一个,当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是true,否则是false。

public class Application {public static void main(String[] args){Object o = new Student();System.out.println(o instanceof Person);}
}

运行结果:

true

Java运算符的优先级和结合性

优先级是可以决定运算的先后;

结合性则是决定了相同级别运算符的先后顺序;

  今天就分享这么多了,大家看完多多点赞评论,您的反馈是我创作的动力。

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV基础:用Python生成一幅黑白图像

使用Python&#xff1a;生成一幅左黑右白的灰度图像&#xff0c;图像大小为1616像素。借助OpenCV库。输出数值&#xff0c;并显示图像。 # -*- coding: utf-8 -*- """ Created on Wed Feb 14 21:45:45 2024author: 李立宗公众号&#xff1a;计算机视觉之光知识…

Java基于微信小程序的医院挂号系统

文章目录 1 简介2 技术栈3 系统目标3.2 系统功能需求分析3.2.1 功能需求分析 4 系统模块设计4.1 数据库模块设计 5 系统的实现5.1 微信小程序个人中心5.2 科**室内容查看的实现**5.3 预约挂号的实现5.4 后台管理界面实现5.5 医生预约管理5.6 医生信息管理 参考文献7 推荐阅读8 …

随机过程及应用学习笔记(二)随机过程的基本概念

随机过程论就是研究随时间变化的动态系统中随机现象的统计规律的一门数学学科。 目录 前言 一、随机过程的定义及分类 1、定义 2、分类 二、随机过程的分布及其数字特征 1、分布函数 2、数字特征 均值函数和方差函数 协方差函数和相关函数 3、互协方差函数与互相关函…

每日五道java面试题之java基础篇(七)

第一题. HashMap和HashTable有什么区别&#xff1f;其底层实现是什么&#xff1f; 区别 &#xff1a; HashMap⽅法没有synchronized修饰&#xff0c;线程⾮安全&#xff0c;HashTable线程安全&#xff1b;HashMap允许key和value为null&#xff0c;⽽HashTable不允许 底层实现…

AI:125-基于深度学习的航拍图像中地物变化检测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图&#xff1a; linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

C# OCR识别图片中的文字

1、从NuGet里面安装Spire.OCR 2、安装之后&#xff0c;找到安装路径下&#xff0c;默认生成的packages文件夹&#xff0c;复制该文件夹路径下的 6 个dll文件到程序的根目录 3、调用读取方法 OcrScanner scanner new OcrScanner(); string path "C:\1.png"; scann…

算法刷题:盛水最多的容器

盛水最多的容器 .习题链接题目题目解析算法原理我的答案 . 习题链接 盛水最多的容器 题目 题目解析 VH*W h为左右两边低的一边,w为左右两边之间的距离 算法原理 定义两个指针 left0,rightn-1; left从左往右对数组进行遍历,right从右往左进行遍历 遍历的过程中,每一次都需要…

2000-2021年县域指标统计数据库

2000-2021年县域统计数据库 1、时间&#xff1a;2000-2021年 2、来源&#xff1a;县域统计年鉴 3、范围&#xff1a;2500县 5、指标&#xff1a; 地区名称、年份、行政区域代码、所属城市、所属省份、行政区域土地面积平方公里、乡及镇个数个、乡个数个、镇个数个、街道办…

锁(二)队列同步器AQS

一、队列同步器AQS 1、定义 用来构建锁或者其他同步组件的基础框架&#xff0c;它使用了一个int成员变量表示同步状态&#xff0c;通过内置的FIFO队列来完成资源获取线程的排队工作。是实现锁的关键。 2、实现 同步器的设计是基于模板方法模式的&#xff0c;也就是说&#…

【刷题记录】——时间复杂度

本系列博客为个人刷题思路分享&#xff0c;有需要借鉴即可。 1.目录大纲&#xff1a; 2.题目链接&#xff1a; T1&#xff1a;消失的数字&#xff1a;LINK T2&#xff1a;旋转数组&#xff1a;LINK 3.详解思路&#xff1a; T1&#xff1a; 思路1&#xff1a;先排序&#xf…

Android:国际化弹出框

3.13 风格与主题、国际化 1、应用国际化 应用国际化&#xff0c;通过修改系统语言&#xff0c;应用显示语言跟着改变。 选择Locale,点击>>符号。 创建多个国家&#xff0c;地区strings.xml文件&#xff0c;有一个默认strings.xml文件&#xff0c;各个stirngs.xml中<…

MySQL数据库⑨_事务(四个属性+回滚提交+隔离级别+MVCC)

目录 1. 事务的概念和四个属性 2. 事务的支持版本 3. 事务的提交方式 4. 事务的相关演示 4.1 常规操作_回滚_提交 4.2 原子性_演示 4.3 持久性_演示 4.4 begin自动更改提交方式 4.5 单条SQL与事务的关系 5. 事务的隔离级别 5.1 四种隔离级别 5.2 查看与设置隔离级别…

mfc110.dll是什么?解决mfc110.dll丢失windows系统常见问题

今天我在打开电脑软件时候&#xff0c;突然报错出现找不到mfc110.dll丢失&#xff0c;无法打开软件&#xff0c;我不知道是什么原因&#xff0c;后面找了很久才找到解决方法&#xff0c;那么mfc110.dll是什么&#xff1f;为什么会丢失和mfc110.dll解决方法是什么&#xff0c;今…

【Web】Redis未授权访问漏洞学习笔记

目录 简介 靶机配置 Redis持久化 Redis动态修改配置 webshell 反弹shell Redis写入反弹shell任务 加固方案 简介 Redis&#xff08;Remote Dictionary Server 远程字典服务器&#xff09;是一个开源的内存数据库&#xff0c;也被称为数据结构服务器&#xff0c;它支持…

CSS介绍

本章目标&#xff1a; CSS概述 三种样式表 简单选择器 复合选择器 盒子模型 常用背景样式 浮动 常用文本样式 伪类样式 列表样式 表格样式 定位 一、CSS概述: CSS&#xff1a;cascading style sheets-层叠样式表 专门负责对网页的美化 二、有三种使用方式&…

《金融人工智能:用python实现ai量化交易》

融合了数学、python、深度学习以及金融知识&#xff0c;是本推荐的好书。请收藏本文&#xff0c;读后再给大学总结。

解密 ARMS 持续剖析:如何用一个全新视角洞察应用的性能瓶颈?

作者&#xff1a;饶子昊、杨龙 应用复杂度提升&#xff0c;根因定位困难重重 随着软件技术发展迭代&#xff0c;很多企业软件系统也逐步从单体应用向云原生微服务架构演进&#xff0c;一方面让应用实现高并发、易扩展、开发敏捷度高等效果&#xff0c;但另外一方面也让软件应…

剑指offer——二进制中1的个数

目录 1. 题目描述2. 可能引起死循环的想法3. 改进后的代码4. 给面试官惊喜的代码 1. 题目描述 请实现一个函数&#xff0c;输入一个整数&#xff0c;输出该数二进制表示中1的个数。例如把9表示成二进制位1001&#xff0c;有2位是1&#xff0c;因此如果输入9&#xff0c;该函数输…

idea: 无法创建Java Class文件(SpringBoot)已解决

第一&#xff1a;点击file-->project Sructure... 第二步&#xff1a;点击Moudules 选择自己需要创建java的文件夹&#xff08;我这里选择的是main&#xff09;右键点击Sources&#xff0c;然后点击OK即可 然后就可以创建java类了