Java 运算符

按照功能划分:

功能 运算符
算术运算符 +-*/++--%
关系运算符 <<=>>===!=
逻辑运算符 &&||&|!
位运算符 &|~^>>>>><<
赋值运算符 =+=-=*=/=%=
字符串连接符 +
条件运算符 ?:
其他运算符 instanceofnew

算术运算符

关于Java编程中运算符:算术运算符

运算符 作用
+ 相和
- 相减
* 相乘
/ 相除
% 求余
++ 自减
-- 自增
  • % 是求取余数,又称作【取模】
  • ++ 可以出现在变量前或后,运算后变量结果会增加 1 ,有两种使用i++,++i
    • i++:先做赋值运算,再对变量自增
    • ++i:先对变量自增,再做赋值运算
  • --++ 相似只不过变减少 1

注意:一个表达式当中有多个运算符,运算符有优先级、不确定的加小括号,优先级得到提升。不需要刻意去记忆运算符的优先级。

public class OperatorTest {
public static void main(String args[]) { int i = 10;
int j = 3; System.out.println(i + j); // 13
System.out.println(i - j); // 7
System.out.println(i * j); // 30
System.out.println(i / j); // 3 整型与整型计算结果还是整型
System.out.println(i % j); // 1 //------------------------------------------------------------- // ++ 出现在变量后
int k1 = 10;
int m = k1 ++; System.out.println(k1); // 11
System.out.println(m); // 10
// 先做赋值运算,再对变量自增 // ++ 出现在变量前
int k2 = 10;
int n = ++ k2; System.out.println(k2); // 11
System.out.println(n); // 11
// 先对变量自增,再做赋值运算
System.out.println(n); }
}

关系运算符

关于Java编程中运算符:关系运算符

运算符 作用
< 小于
> 大于
<= 小于等于
>= 大于等于
== 等于
!= 不等于
  • 注意区别:= 是赋值运算符;== 是关系运算符。
  • 关系运算符的结果一定是布尔类型:true / false
public class OperatorTest {
public static void main(String args[]) { // 关系运算符的结果
System.out.println(10 > 1); // true
System.out.println(10 < 1); // false
}
}

逻辑运算符

关于Java编程中运算符:逻辑运算符

运算符 作用
& 逻辑与
| 逻辑或
! 逻辑非
^ 逻辑异或
&& 短路与
|| 短路或
  • 逻辑运算符要求两边的算子都是布尔类型,结果也是布尔类型
  • &&\|\|&\| 的区别,前者存在短路,短路与和短路或的执行效率更高(使用较多)
    • && 前面的算子为 false 则后面将不会执行
    • \|\| 前面的算子为 true 则后面将不会执行
public class OperatorTest {
public static void main(String args[]) { System.out.println(5 > 3 & 5 > 2); // true
System.out.println(5 > 3 & 5 > 6); // false /* 短路现象 */
int a = 10; // 使用 &&
System.out.println(false && (a++ > 1)); // false
System.out.println(a); // 10 // 使用 &
System.out.println(false & (a++ > 1)); // false
System.out.println(a); // 11
}
}

位运算【略】

  • 位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
运算符 作用
& 如果相对应位都是1,则结果为1,否则为0
| 如果相对应位都是 0,则结果为 0,否则为 1
~ 按位取反运算符翻转操作数的每一位,即0变成1,1变成0
^ 如果相对应位值相同,则结果为0,否则为1
>> 按位右移运算符。左操作数按位右移右操作数指定的位数
<< 按位左移运算符。左操作数按位左移右操作数指定的位数
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充

赋值运算符

  • 赋值类运算符包括两种:

    • 基本运算符:= 简单的赋值运算符,将右操作数的值赋给左侧操作数
    • 扩展运算符:+=-=*=/=%= 是对于算术运算符中部分内容的简化
  • 赋值类运算符的优先级:先执行等号右边的表达式,在进行赋值给左边的变量

  • 扩展运算符不改变运算结果的类型,使用时注意精度损失

public class OperatorTest {
public static void main(String[] args) { // 基本的赋值运算符
int i = 10; // 扩展运算符,对比
i = i + 5; // 15 先计算 i + 5 , 在赋值给 i
i += 5; // 20 可以理解为 “追加/累加”,效率高于 i = i + 5 //------------------------------------------------------------- // 10 没有超出byte范围,可以直接赋值
byte b = 10; // b = b + 5; 编译错误
/* 编译器只检查语法,不运行程序编译器
编译器发现 b+5 的类型是 int 类型 ,b 变量的类型是 byte , 大容量向小容量转换需要强制类型转换符,所以编译错误 */
b = (byte)(b + 5); // 纠正 byte x = 10;
x += 5; // 编译通过,所以 x += 5 不等同于 x = x + 5
System.out.println(x); // 15 byte z = 0;
z += 128; // 等同于 z = (byte)(z + 128)
System.out.println(x); // -128【精度损失】
}
}

字符串连接符

  • 关于 + 运算符:

    • 加法运算,求和
    • 字符串连接运算
  • 只要 + 运算符两边有一个数据是字符串类型,则是字符串连接运算,运算结果为字符串类型

  • 在一个表达式中出现多个 + ,在没有小括号的前提下,从左向右

public class OperatorTest {
public static void main(String[] args) { System.out.println(10 + 20 + "30"); // "3030" int a1 = 10;
int a2 = 20; // 要求以动态的方式输出 "10 + 20 = 30"
System.out.println(a1 + " + " + a2 + " = " + (a1 + a2)); // 10 + 20 = 30
}
}

三元运算符

  • ?:的语法:

    • 布尔表达式 ? 表达式 : 表达式
  • 当布尔表达式结果为:

    • true 执行 : 前的表达式
    • false 执行 : 后的表达式
public class OperatorTest {
public static void main(String[] args) { boolean sex = false;
char ch = sex ? '男' : '女';
System.out.println(ch); // '女' sex = true;
ch = sex ? '男' : '女';
System.out.println(ch); // '男' }
}


基础章


合集总目录:学习笔记--Java合集

学习笔记--Java 运算符的更多相关文章

  1. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  2. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  3. C++学习笔记之运算符重载

    一.运算符重载基本知识 在前面的一篇博文 C++学习笔记之模板(1)——从函数重载到函数模板 中,介绍了函数重载的概念,定义及用法,函数重载(也被称之为函数多态)就是使用户能够定义多个名称相同但特征标 ...

  4. Java学习笔记 -- Java定时调度工具Timer类

    1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...

  5. 大数据学习笔记——Java篇之网络编程基础

    Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...

  6. 大数据学习笔记——Java篇之IO

    IO学习笔记整理 1. File类 1.1 File对象的三种创建方式: File对象是一个抽象的概念,只有被创建出来之后,文件或文件夹才会真正存在 注意:File对象想要创建成功,它的目录必须存在! ...

  7. 大数据学习笔记——Java篇之集合框架(ArrayList)

    Java集合框架学习笔记 1. Java集合框架中各接口或子类的继承以及实现关系图: 2. 数组和集合类的区别整理: 数组: 1. 长度是固定的 2. 既可以存放基本数据类型又可以存放引用数据类型 3 ...

  8. [Java学习笔记] Java异常机制(也许是全网最独特视角)

    Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...

  9. 学习笔记——Java类和对象

    今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...

  10. 设计模式学习笔记——java中常用的设计模式

    单例设计模式(Singleton Pattern) 观察者模式(Observer Pattern) 工厂模式(Factory Pattern) 策略模式(Strategy Pattern) 适配器模式 ...

随机推荐

  1. 鸿蒙极速入门(五)-路由管理(Router)

    页面路由指在应用程序中实现不同页面之间的跳转和数据传递.HarmonyOS提供了Router模块,通过不同的url地址,可以方便地进行页面路由,轻松地访问不同的页面. 一.基础使用 Router模块提 ...

  2. nginx优化实践与验证

    nginx优化实践 实践场景1: 单台nginx 2核4G 实践场景2: 三台nginx 2核4G 压测工具:WRK 初始安装的nginx压测: yum install -y nginx 安装WRK压 ...

  3. NOIP模拟53

    我在时光斑驳深处,聆听到花开的声音. 前言 这套题好像是随便拼接起来的,来自三套不同的题,最后一道还是学长出的(nb 场上为数不多的几次死磕一道题正解,大概有三个小时吧(惭愧,前两个小时看错题了,一直 ...

  4. 使用swiper完成轮播图

    swiper:https://www.swiper.com.cn/usage/index.html 安装swiper cnpm i -S swiper 在功能组件中定义Swiper组件并设置好插槽 & ...

  5. xv6 内核空间共享

    首发公号:Rand_cs 共享内核空间 我们常说,每个进程都有自己的虚拟地址空间,但其中内核部分是共享的. 这就有个问题,如何共享的? 系统启动时创建了一张内核页表,里面记录着内核地址空间与物理地址空 ...

  6. NET9 提供HybridCache解决分布式缓存中存在的远程链接&序列化带来的性能问题

    下面是一个标准的IDistributedCache用例: public class SomeService(IDistributedCache cache) { public async Task&l ...

  7. C程序函数调用&系统调用

    理解程序的执行 我们要知道CPU可以自由地访问寄存器.内存.另外,程序是由操作系统执行的,所以操作系统能够控制程序的所有执行情况,限制程序的行为. 程序地执行过程: 程序是一个二进制文件,包含程序的代 ...

  8. mysql GROUP_CONCAT给每个值加上单引号后再拼接

    经常使用group_concat拼接数值,但有一些中文在拼接时添加单引号会比较好, 该怎么操作呢? 可以使用如下语句,在字段前添加四个单引号和逗号,并在字段后也添加一个引号和四个单引号: 1 SELE ...

  9. elasticsearch6.8 ik分词器需安装

    elasticsearch6.8  ik分词器需安装order_info_es/_analyze POST{ "analyzer": "ik_max_word" ...

  10. 洛谷 P1216 数字三角形

    题目链接:数字三角形 思路 dp:金字塔顶的元素为起点,金字塔每行的最左侧数字只能从上一层的最左侧数字到达,如7 -> 3 -> 8 -> 2 -> 4,这些数字中的每一个(除 ...