您现在的位置是:首页 > 正文

java运算符

2024-01-30 19:52:34阅读 0

java运算符

一、算术运算符

在这里插入图片描述

  • java中,不同的数据类型,会先转换为同一数据类型再进行运算
  • 与C/C++不同的是,取模运算符%的操作数可以为浮点数,如9.5%3=0.5
注:+a 还有一个功能,如果a是byte,short,char类型,那么a类型将会被提升为int型

另外 java中没有幂运算符,必须采用Java.lang,Math类的pow()方法。如下

double a = Math.pow(2,3); //返回值2^3

Math类提供了大量数学和工程函数,例如pi和e等等,精度也很高,还有平方根,自然对数,三角函数等。

二、关系运算符

关系运算符用来比较两个操作数,由两个操作数和关系运算符构成一个关系表达式,关系运算符的操作结果都是布尔类型的。关系成立就为true,反之为false

在这里插入图片描述
在java中,任何数据类型(包括基本数据类型和复合类型)都可以通过==或者!= 来比较是否相等,这与C/C++不同

class AriTest 
{
	public static void main(String[] args) 
	{
		char c = 'a';
		int i1 = 97;
		boolean i = (c == i1);
		System.out.println(i);  //返回true
	}
}

三、逻辑运算符

逻辑表达式由逻辑型操作数和逻辑运算符组成,一个或多个关系表达式可以进行逻辑运算。java中逻辑运算符共由6种,其中由5个二元运算符和1个一元运算符。
在这里插入图片描述

这里来说一下 &&,|| 与 &,| 的差别

  • &&,|| 表示短路与、或运算。表达式求值过程中先求出运算符左边的表达式的值,对于或运算如果左边的表达式的值为true,则整个布尔逻辑表达式就为true,不再对运算符右边的表达式进行运算;同样的,对于与运算,如果左边表达式的值为false ,那么整个逻辑表达式的值就为false,不会对右边的表达式求值。
  • &,| 称为不短路运算,即不管第一个操作数是true 还是false ,他仍要把第二个操作数的值求出,然后再做逻辑运算求出逻辑表达式。

四、位运算符

对于任何一种整数类型的数值,可以直接使用位运算符对这些组成整型的二进制位进行操作。这意味着可以利用屏蔽和置位技术来设置或获得一个数字种的单个位或几位,或将一个位模式向右或向左移动。

位运算符分为位逻辑运算符和位移位运算符

1)位逻辑运算符

位逻辑运算符由3个二元运算符和1个一元运算符。二元运算中,是再两个操作数每个对应位上进行相应的逻辑运算
在这里插入图片描述
举个例子:
00101101&01001111 = 00001101

2)移位运算符

前面我们知道,java中用补码来表示二进制数,因此位移运算符都是针对整型数的二进制补码进行。

移位运算符把它的第一个操作数向左或向右运动一定的位数
在这里插入图片描述

注:1)右移运算中右移一位相当于除2取商;在不产生溢出的情况下,左移一位相当于乘2,并且用移位运算实现乘除法比较执行乘除法的速度要快。例如:

-256>>4 结果是-256/(2^4) = -16
128>>1 结果是128/2 = 64
-16<<2 结果是-1622 = -64
128<<1 结果是128*2 = 256

注:2)右移运算符>>与>>>的区别

  • 这>>称为带符号的右移。进行向右移位运算时,最高位移入原来高位的值
    例如:1010… >>2 结果是111010…
  • 这>>>称为无符号右移。进行向右移位运算时,最高位以0填充。例如
    1010…>>>2 结果是001010…

五、赋值运算符

赋值表达式由变量、赋值运算符和表达式组成。赋值运算符把一个表达式的值赋给一个变量。赋值运算符分为赋值运算符“=” 和 扩展赋值运算符两种。在赋值运算符两侧的类型不一致的情况下,如果左侧变量类型级别高,则右侧数据被转化为与左侧相同的高级数据类型后赋给左侧。否则,则需要使用强制类型转换符。 例如:

byte b = 121;
int i = b ; // 自动类型转换
byte c = 13;
byte d = (byte) (b+c); // 强制类型转换
在赋值运算符“=”前面加上其他运算符,则构成扩展赋值运算符。就例如:
  • b%=6 等价于 b = b%6;
  • a + = 3 等价于 a = a+3

六、其他运算符

Java支持的其他运算符使用方法和功能描述如下:
在这里插入图片描述

七、运算符的优先级

  • 1.后缀运算符 --> [ ],.,(params)expr++,expr–
  • 2.一元运算符 --> ++expr,–expr,+expr,-expr,~,!
  • 3.创建或强制类型转换 new(type)expr
  • 4.乘、除、求余
  • 5 加减
  • 6 移位–> >>,<<,>>>
  • 7 关系运算 --> <,>,<=,>=,instanceof
  • 8 相等性判定, == ,!=
  • 9 按位与 &
  • 10 按位异或 ^
  • 11 按位或 |
  • 12 逻辑与 &&
  • 13 逻辑或 ||
  • 14 条件运算 ?:
  • 15 赋值 = +=,-=,…

做一个小练习把,很常用的,交换两个变量的位置

方式一、定义一个临时变量

int num1 = 10;
int num2 = 20;
int temp = num1;
num1 = num2;
num2 = temp;

方式二 // 只适用于数值型

num1 = num1 + num2;
num2 = num1 - num2;
num1 = num1 - num2;

方式三、使用位运算符 , 只适用于数值型

假设 k = m^n (异或)
m = k ^ n = (m^n) ^n

num1 = num1 ^ num2;//k
num2 = num1 ^ num2; // 算出来是之前num1的值
num1 = num1 ^ num2; // 这样算出来是之前num2的值

网站文章

  • 计算机远程桌面多用户连接,电脑远程连接如何打开并设置多用户登录

    计算机远程桌面多用户连接,电脑远程连接如何打开并设置多用户登录

    远程连接功能,对于普通用户来说,应该是用的比较少的功能之一,所以在win7系统上是默认关闭的一个功能,可是有部分用户,在某些时候,可能会用到远程桌面连接功能,那么究竟应该如何打开并设置多用户登录呢?针...

    2024-01-30 19:52:26
  • 库函数的模拟实现

    模拟实现strlen://方法1:计数器方式int my_strlen(const char *str){ int count = 0; assert(str); while (*str) { ++...

    2024-01-30 19:51:58
  • 正则表达式的反向引用

    1、反向引用(Backreferences)是Java正则表达式的重要特性。为了理解反向引用,我们先对解释Java正则表达式里面的组。组在正则表达式中意味着将多个字符作为一个单独的单元,通过将字符放在()中,每个()代表一个组。每一组都有一个行号,从1开始。Matcher类的groupCount方法返回模式(Pattern)关联Matcher实例组的个数。第0组指向整个表达式。2、

    2024-01-30 19:51:41
  • 宁波银行技术面经-2021.8

    宁波银行技术面经-2021.8校园招聘 校园招聘 1、自我介绍 2、创建线程有几种方式 3、抽象类和接口的区别 4、你的技术栈有哪些 5、介绍一个你做过的项目 6、项目中有没有遇到困难,讲一下 7、说...

    2024-01-30 19:51:35
  • nodejs基于express4+mysql+express-controller的mvc框架

    在用php开发app后台的时候获得了一些灵感,参考了一下php mvc设计,用express尝试搭建了一个微框架 框架目录: config ------------- 配置文件目录 controllers ------- 控制器 models ----------- 模型 public ------------- 静态文件目录 views -------------- 视图 app.

    2024-01-30 19:51:28
  • 【Spring Boot实战】在线学习平台

    本项目基于SpringMVC和MyBatis框架,实现了一个在线学习平台。该平台由博客模块和在线OJ模块组成。

    2024-01-30 19:50:58
  • Python strip()方法:移除头尾字符

    描述 Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。语法 strip()方法语法:str.strip([chars]);参数 chars – 移除字符串头尾指定的字符。...

    2024-01-30 19:50:50
  • (转)ubuntu系统分区

    (转)ubuntu系统分区

    硬盘分区分区类型主分区         最多只能有4个。(硬盘结构决定  扇区512字节  446启动  64分区表示  16个表示一个分区)       『 如果您要分割硬盘时,并且已经预计规划使用掉 MBR (主要开机扇区)所提供的 4 个 partition ( 3P + E(exte

    2024-01-30 19:50:43
  • #git操作#修改上一次的commit(最后一次commit已经提交push)

    目录前言一、修改最后一次注释并且已经提交的步骤 前言 自己的现有的功能完成之后,进行代码的提交,但是在本地仓库进行: git add . git commit -m &#39;注释&#39; 这里的注...

    2024-01-30 19:50:03
  • Github桌面端上传远程仓库以及将私有仓库改为公有仓库的方法

    Github桌面端上传远程仓库以及将私有仓库改为公有仓库的方法

    pass 1: 在github上下载一个桌面端应用程序.exepass 2: 用自己的github进行登录,可以在程序的头部栏看到一些应用操作,下载后登录了解即可可以打开自己的github仓库,再打开本地文件夹,上传流自己的代码或者文件(是同步的)

    2024-01-30 19:49:55