学习笔记--Java 运算符
Java 运算符
按照功能划分:
| 功能 | 运算符 | 
|---|---|
| 算术运算符 | +、-、*、/、++、--、% | 
| 关系运算符 | <、<=、>、>=、==、!= | 
| 逻辑运算符 | &&、||、&、|、! | 
| 位运算符 | &、|、~、^、>>、>>>、<< | 
| 赋值运算符 | =、+=、-=、*=、/=、%= | 
| 字符串连接符 | + | 
| 条件运算符 | ?: | 
| 其他运算符 | instanceof、new | 
算术运算符
关于Java编程中运算符:算术运算符
| 运算符 | 作用 | 
|---|---|
+ | 
相和 | 
- | 
相减 | 
* | 
相乘 | 
/ | 
相除 | 
% | 
求余 | 
++ | 
自减 | 
-- | 
自增 | 
%是求取余数,又称作【取模】++可以出现在变量前或后,运算后变量结果会增加1,有两种使用i++,++ii++:先做赋值运算,再对变量自增++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 运算符的更多相关文章
- [java学习笔记]java语言核心----面向对象之this关键字
		
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
 - [java学习笔记]java语言核心----面向对象之构造函数
		
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
 - C++学习笔记之运算符重载
		
一.运算符重载基本知识 在前面的一篇博文 C++学习笔记之模板(1)——从函数重载到函数模板 中,介绍了函数重载的概念,定义及用法,函数重载(也被称之为函数多态)就是使用户能够定义多个名称相同但特征标 ...
 - Java学习笔记 -- Java定时调度工具Timer类
		
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
 - 大数据学习笔记——Java篇之网络编程基础
		
Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...
 - 大数据学习笔记——Java篇之IO
		
IO学习笔记整理 1. File类 1.1 File对象的三种创建方式: File对象是一个抽象的概念,只有被创建出来之后,文件或文件夹才会真正存在 注意:File对象想要创建成功,它的目录必须存在! ...
 - 大数据学习笔记——Java篇之集合框架(ArrayList)
		
Java集合框架学习笔记 1. Java集合框架中各接口或子类的继承以及实现关系图: 2. 数组和集合类的区别整理: 数组: 1. 长度是固定的 2. 既可以存放基本数据类型又可以存放引用数据类型 3 ...
 - [Java学习笔记] Java异常机制(也许是全网最独特视角)
		
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...
 - 学习笔记——Java类和对象
		
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
 - 设计模式学习笔记——java中常用的设计模式
		
单例设计模式(Singleton Pattern) 观察者模式(Observer Pattern) 工厂模式(Factory Pattern) 策略模式(Strategy Pattern) 适配器模式 ...
 
随机推荐
- [COCI2008-2009 #2] PERKET
			
传送锚点:https://www.luogu.com.cn/problem/P2036 题目描述 Perket 是一种流行的美食.为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽 ...
 - nginx学习记录【二】nginx跟.net core结合,实现一个域名访问多个.net core应用
			
1.实现转发 打开conf下的nginx.conf文件,如下图: 2.添加.net core网站的转发 按下面的进行修改,修改完后,就把localhost的80转发到了https://localhos ...
 - itest(爱测试) 开源接口测试,敏捷测试管理平台10.1.0发布
			
一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...
 - Pod安全策略:PodSecurityPolicy(PSP)
			
目录 一.系统环境 二.前言 三.PodSecurityPolicy 简介 四.为什么需要 PodSecurityPolicy 五.给客户端授权 六.启用PodSecurityPolicy(PSP) ...
 - LeetCode 685. Redundant Connection II 冗余连接 II (C++/Java)
			
题目: In this problem, a rooted tree is a directed graph such that, there is exactly one node (the roo ...
 - Linux扩展篇-shell编程(三)-shell运算符
			
基本语法: 格式一 expr +. -. \*./. %(加.减.乘.除.求余) 格式二 "$((运算式))"或者"$[运算式]" 基本运算符 Shell 和其 ...
 - rest接口list参数接收
			
list<String> post传参 ["1112","2222","3332"]list<Object> pos ...
 - 技嘉BIOS超频设置操作路径
			
关闭超线程 频率电压控制 > 进阶处理器设置 > Hyper_THreading 关小核心 频率电压控制 > GIGABYTE PerfDrive > Ecore Disabl ...
 - sqlUtil
			
package com.cmbchina.monitor.utils;import com.alibaba.druid.sql.ast.SQLStatement;import com.alibaba. ...
 - Dell服务器配置RIAD并创建热备盘
			
在系统启动期间,按F2键进入System Setup(系统设置)主菜单 单击Device Settings(设备设置). 单击所需的RAID controller(RAID控制器)设备. 4.单击Co ...