运算符

一、赋值运算符号

No.
赋值运算符号
描述
1
=
赋值
        int num=22;
System.out.println("num= "+num);
num=num-3;
System.out.println("num= "+num);

结果:

num= 22

num= 19

二、一元运算符

No.
一元运算符
描述
1
+
正号
2
负号
3
!
NOT,否
        boolean flag=false;
int x=10; //定义一个正数
int y=-30; //定义一个负数
System.out.println("x= "+x);
System.out.println("y= "+y);
System.out.println("flag= "+flag+"!b= "+!flag);

结果:

x= 10
y= -30
flag= false  !b= true

三、算术运算符

算术运行符和数学中的用法一样

No.
算术运算符
描述
1
+
加法
2
减法
3
*
乘法
4
/
除法
5
%
取模(取余数)
        int i = 10;
int j = 3;
System.out.println(i+"+"+j +"="+(i+j)); //加法
System.out.println(i+"-"+j +"="+(i-j)); //减法
System.out.println(i+"*"+j +"="+(i*j)); //乘法
System.out.println(i+"/"+j +"="+(i/j)); //除法
System.out.println(i+"%"+j +"="+(i%j)); //取模求余数

结果:

10+3=13
10-3=7
10*3=30
10/3=3
10%3=1

四、关系运算符

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

五、自增与自减运算符

No.
自增与自减运算符
描述
1
++
自增,变量值加1
2
--
自减,变量值减1
        int a=3,b=3;             //定义整型变量a,b
int x=6,y=6; //定义整型变量x,y
System.out.println("a= "+a); //输出变量a的值
System.out.println("a++="+(a++)+" a= "+a); //输入a++和a++之后a的值3,4
System.out.println("b= "+b);
System.out.println("++b="+(++b)+" b="+b); //值出++b,和++b之后b的值4,4
System.out.println("x= "+x);
System.out.println("x--="+(x--)+" x= "+x); //输出x--和x--之后x的值6,5
System.out.println("y= "+y);
System.out.println("--y="+(--y)+" y="+y); //输出--y和--y之后的值5,5

六、逻辑运算符

No.
逻辑运算符
描述
1
&
AND,与
2
&&
短路与
3
|
OR,或
4
||
短路或
 
AND及 OR结果表
No.
条件1
条件2
结果
&&(与)
||(或)
1
true
true
true
true
2
true
false
false
true
3
false
true
false
true
4
false
false
false
false
  • &&”与“&”
  • &&表示短路与
  • 对于“与”来说,要求所有的条件都判断,而如果使用“短路与”如果第一个条件为false,则后面的条件将不再判断
  • “||”与“|”
  • ||表示短路或
  • 对于“或”来说,要求所有的条件都判断,而如果使用“短路或”如果第一个条件为true,则后面的条件将不再判断。

七、括号运算符

No.
括号运算符
描述
1
()
提高括号中表达式的优先级

八、位运算符

No.
逻辑运算符
描述
1
&
按位与
2
|
按位或
3
^
异或(相同为0,不同为1)
4
~
取反
5
<<
左移位
6
>>
右移位
7
>>>
无符号右移位

位运算的结果表

No.
二进制数1
二进制数1
与操作(&
或操作(|
异或操作(^
1
0
0
0
0
0
2
0
1
0
1
1
3
1
0
0
1
1
4
1
1
1
1
0

九、运算符的优先级

优先级
运算符
结合性
1
()
括号运算符
由左至右
1
[]
方括号运算符
由左至右
2
!、+(正号)、-(负号)
一元运算符
由右至左
2
~
位逻辑运算符
由右至左
2
++、--
递增与递减运算符
由右至左
3
*、/、%
算术运算符
由左至右
4
+、-
算术运算符
由左至右
5
<<、>>
位左移、右移运算符
由左至右
6
>、>=、<、<=
关系运算符
由左至右
7
==、!=
关系运算符
由左至右
8
&(位运算符AND)
位逻辑运算符
由左至右
9
^(位运算符号XOR)
位逻辑运算符
由左至右
10
|(位运算符号OR)
位逻辑运算符
由左至右
11
&&
逻辑运算符
由左至右
12
||
逻辑运算符
由左至右
13
?:
三目运算符
由右至左
14
=
赋值运算符
由右至左

十、简洁表达式

No.
运算符
范例用法
说明
描述
1
+=
a += b
a + b的值存放到a中
a = a + b
2
-=
a -= b
a - b的值存放到a中
a = a - b
3
*=
a *= b
a * b的值存放到a中
a = a * b
4
/=
a /= b
a / b的值存放到a中
a = a / b
5
%=
a %= b
a % b的值存放到a中
a = a % b
简洁表达式的范例
No.
运算符
范例
执行前
说明
执行后
a
b
a
b
1
+=
a += b
12
3
a + b的值存放到a中(同a = a + b)
15
3
2
-=
a -= b
12
3
a - b的值存放到a中(同a = a – b)
9
3
3
*=
a *= b
12
3
a * b的值存放到a中(同a = a * b)
36
3
4
/=
a /= b
12
3
a / b的值存放到a中(同a = a / b)
4
3
5
%=
a %= b
12
3
 a % b 的值存放到a中(同a = a % b)
0
3
6
b++
a *= b++
12
3
a * b的值存放到a后,b加1(同a = a * b;b++)
36
4
7
++b
a *= ++b
12
3
  b加1后,再将a*b的值存放到a(同b++;a=a*b)
48
4
8
b--
a *= b--
12
3
a * b的值存放到a后,b减1(同a=a*b;b--)
36
2
9
--b
a *= --b
12
3
    b减1 后,再将a*b的值存放到a(同b--;a=a*b)
24
2

Java从零开始学六(运算符)的更多相关文章

  1. Java从零开始学三十六(JAVA IO- 字符流)

    一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的 ...

  2. Java从零开始学二十六(包装类)

    一.包装类 包装类是将基本类型封装到一个类中.也就是将基本数据类型包装成一个类类型. java程序设计为每一种基本类型都提供了一个包装类.这些包装类就在java.lang包中.有8个包装类 二.包装类 ...

  3. Java从零开始学十六(多态)

    一.什么是多态 多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活.抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题.多态有两种表现形 ...

  4. Java从零开始学四十六(Junit)

    一.软件测试 软件开发: 项目调研--需求分析--软件设计--程序编码--软件测试--运行维护 软件测试:利用测试工具按照测试方案和流程对产品进行功能和性能测试,使用人工或者自动手段来运行或测试某个系 ...

  5. Java从零开始学四十五(Socket编程基础)

    一.网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...

  6. Java从零开始学四十四(多线程)

    一.进程与线程 1.1.进程 进程是应用程序的执行实例. 进程是程序的一次动态执行过程,它经历了从代码加载.执行到执行完毕的一个完整过程,这个过程也是进程本身从产生.发展到最终消亡的过程 特征: 动态 ...

  7. Java从零开始学四十一(反射简述二)

    一.实例化Class类对象 实例化Class类对象的方法有三种: 第一种:通过forName()方法 第二种:类.class 第三种:对象.getClass() 二.Class类的常用方法 No. 方 ...

  8. Java从零开始学四十(反射简述一)

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

  9. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

随机推荐

  1. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 暴力水题

    C. Vasya and Basketball time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  2. 重温PHP之插入排序

    插入排序基本思路:将数组分为两个区(已排序区和未排序区),假定数组的第一个元素处于已排序区, 第一个元素之后的所有元素都处于未排序部分.排序时用到双层循环,外层循环用于从未排序部分中取出待排序元素,并 ...

  3. 亚马逊API的使用

    如上文所说,一个日本友人想要在亚马逊开店,托我帮他做一个小应用.他想实现的主要功能是,定时获取某个商品的最低价,如果这个价格不在他设定的范围内了,就给他发送邮件提醒. 为了帮助我完成程序,他还给我找到 ...

  4. Syncthing -- 开源的云储存和同步服务工具

    Syncthing  -- an open-source file synchronization client/server application Syncthing是一个开源的云存储和同步服务工 ...

  5. cmake和make区别

    大家都知道,写程序大体步骤为: 1.用编辑器编写源代码,如.c文件. 2.用编译器编译代码生成目标文件,如.o. 3.用链接器连接目标代码生成可执行文件,如.exe. 但如果源文件太多,一个一个编译时 ...

  6. 淘宝API得到单个商品的信息,用了淘宝的SDK...

    淘宝api获取到的数据.返回结果可以选择json格式和xml格式的啊.每个api下面都有sdk调用示例哦. 详细:http://wenwen.soso.com/z/q335640192.htm 淘宝开 ...

  7. Access-Control-Allow-Origin,跨域

    1.浏览器的同源安全策略 浏览器只允许请求当前域的资源,而对其他域的资源表示不信任.那怎么才算跨域呢? 请求协议http,https的不同 域domain的不同 端口port的不同 好好好,大概就是这 ...

  8. C#程序集系列05,让程序集包含多个module

    本篇体验在一个程序集中包含多个module. □ 创建3个module →删除F盘as文件夹中的一些文件,只剩下如下3个文件→用记事本打开MyFirstModule.cs文件,修改如下,并保存 usi ...

  9. 扩展redisTemplate实现分布式锁

    原文:https://blog.csdn.net/qq1010267837/article/details/79697572 依赖jar包 compile group: 'redis.clients' ...

  10. Java 8 中 HashMap 的性能提升

    HashMap是一个高效通用的数据结构,它在每一个Java程序中都随处可见.先来介绍些基础知识.你可能也知 道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶 ...