表达式
表达式: 所谓的表达式,指的是用运算符连接变量所形成的式子。
运算符
简介
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富v的运算符来操纵变量,用于数学运算、逻辑运算、数据处理。
运算符的分类即简单描述
运算符详解
赋值运算符
语法:变量名=值;
具体内容即含义如下表
赋值运算符 | 含义 | 示例 |
---|---|---|
= | 对变量进行赋值 | int a=4;int b=2 |
+= | 加等于 | a+=b;//即a=a+b |
-= | 减等于 | a-=b;//即a=a-b |
*= | 乘等于 | a*=b;//即a=a*b |
/= | 除等于 | a/=b;//即a=a/b |
使用示例
//赋值运算符
int money=1000;
money = 20;
System.out.println(money);
String name = "青素";
System.out.println(name);
int a=4;
int b=2;
a+=b;
System.out.println("此时a的值为:"+a);
a-=b;
System.out.println("此时a的值为:"+a);
a*=b;
System.out.println("此时a的值为:"+a);
a/=b;
System.out.println("此时a的值为:"+a);
算数运算符
具体内容即含义如下表
算数运算符 | 含义 | 示例 |
---|---|---|
+ | 加法 | 1+1 |
- | 减法 | 1-1 |
* | 乘法 | 2*3 |
/ | 除法 | 5/5 |
% | 取余 | 15%10 |
++ | 自增 | ++1 |
-- | 自减 | --3 |
示例
//算数运算符
System.out.println(1+1);
System.out.println(1-1);
System.out.println(2*3);
System.out.println(5/5);
System.out.println(15%10);
//++i 和 i++的区别分析
int i=0;
System.out.println("i++的输出结果为"+(i++)+"\t 此时i的值为"+i);// i++在输出时先进行输出然后进行运算 即先用后加
System.out.println("++i的输出结果为"+(++i)+"\t 此时i的值为"+i);// ++i在输出时先进行运算然后进行输出 即先加后用
System.out.println("i--的输出结果为"+(i--)+"\t 此时i的值为"+i);// i--在输出时先进行输出然后进行运算 即先用后加
System.out.println("--i的输出结果为"+(--i)+"\t 此时i的值为"+i);// --i在输出时先进行运算然后进行输出 即先加后用
//++ 或 -- 放置 位置不用作用发生变化
//++ -- 在变量后面 先输出 后运算 i++ i--
//++ -- 在变量前面 先运算 后输出 ++i --i
关系运算符
关系运算符的返回值为boolean型。用于比较变量或数值之间的关系
具体内容即含义如下表
关系运算符 | 含义 | 示例 |
---|---|---|
> | 判断是否大于 | 2 >1 //返回真 |
< | 判断是否大于 | 2 <1 //返回假 |
== | 判断是否等于 | 2==2 //返回真 |
!= | 判断是否不等于 | 2!=2 //返回假 |
>= | 判断是否大于等于 | 2>=2 //返回真 |
<= | 判断是否小于等于 | 2<=1 //返回假 |
示例
//关系运算符
//关系运算符 比较运算符
//> < >= <= == !=
//结果为真 返回true 结果为假 返回false
System.out.println(2>1);
System.out.println(2<1);
System.out.println(2==2);
System.out.println(2!=2);
System.out.println(2>=2);
System.out.println(2<=1);
//其返回值可以直接赋值给boolean型变量
boolean b=2!=3;
System.out.println("\n"+ b);
逻辑运算符
具体内容即含义如下表
逻辑运算符 | 表达式 | 含义 |
---|---|---|
&& | 条件1&&条件2 | (短路与)当两个或多个条件同时为真时结果为真 |
|| | 条件1||条件2 | (短路或)只要其中一个条件为真结果为真 |
! | !条件 | (逻辑非)条件为真时,结果为假;条件为假时,结果为真 |
& | 条件1&条件2 | (逻辑与)当两个或多个条件同时为真时结果为真 |
| | 条件1|条件2 | (逻辑或)只要其中一个条件为真结果为真 |
^ | 条件1|条件2 | (逻辑异或)同真为假 同假为假 有真有假为真 |
示例
//逻辑运算符 && || | & ! ^
//& 逻辑与 全部为真 结果为true (只要有一个假,结果就是false)
System.out.println(true&&true);
System.out.println(true&&false&&false);
System.out.println(true&true);
System.out.println(true&true&false);
//| 逻辑或 (只要有一个true 其结果就是true)
System.out.println(false||false);
System.out.println(true||true||false);
System.out.println(false|false);
System.out.println(true|true|false);
//&&和& 结果分析 区别介绍
//& 和&& 运算结果是一模一样
//&&完成目的之后就会结束后面的逻辑运算 &则需要所有逻辑比较完成后才会给出结果
//比如true&&false&&false中 true&&false返回假就不会再同后面的true进行比较
//因此再实践中我们通常使用 &&和 || 来节约计算资源
//取反 逻辑非
System.out.println(!true);
//逻辑异或
System.out.println(true^false);
System.out.println(true^true);
System.out.println(false^false);
三目(三元)运算符
语法:数据类型 变量名= 布尔类型表达式?结果1:结果2
返回值:布尔类型表达式为真返回结果1为假返回结果2
示例
System.out.println(5>3?500:600);
System.out.println(false?500:600);
一元二元三元解释
一元运算符:只需要一个操作数就可以进行操作的运算符。例:取反!、自增++
二元运算符:需要两个操作数才可以进行操作的运算符。例:加法+、赋值=
三元运算符:需要三个操作数才可以进行操作的运算符。
位运算符(可以使用但是在Java开发规范中一般不使用)
按位或位运算符 | 含义 | 运算规则 |
---|---|---|
<< | 左移 | << 几位,就乘以 2 的 几次方;二进制补码左移 n 位,右边补 0 |
>> | 右移 | >> 几位,就除以 2 的几次方;二进制补码右移 n 位,左边补0还是1,看最高位 |
>>> | 无符号右移 | 二进制补码右移n位,左边补0;对于负数来说,移完后,变为正数 |
& | 按位与 | 1 & 1 结果1;1 &0 结果0;0 & 1 结果0;0&0 结果0 |
| | 1 |1 结果1;1 |0 结果1;0 | 1 结果1;0|0 结果0 | |
^ | 按位异或 | 1 ^ 1 结果0;1 ^ 0 结果1;0 ^ 1 结果1;0 ^ 0 结果0 |
~ | 按位取反 | ~1 为 0 ; ~0 为 1 |
Java优先级
运算符的优先级决定了表达式中运算执行的先后顺序。通常优先级由高到低的顺序是:
增量和减量运算
算数运算
位运算
关系运算
逻辑运算
赋值运算
具体优先级如下表
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | ()[]. |
2 | 一元运算符 | !、+(正)、-(负)~ 、++、-- |
3 | 乘、除、模 | *、/、% |
4 | 加减 | +、- |
5 | 移位运算 | <<、>>、>>> |
6 | 比较运算 | <、<=、>、>=、instanceof |
7 | 比较是否相等 | ==、!= |
8 | 按位与运算 | & |
9 | 按位异或运算 | ^ |
10 | 按位或运算 | | |
11 | 逻辑与运算 | && |
12 | 逻辑或运算 | || |
13 | 三元运算符 | ? : |
14 | 赋值运算符 | =、*=、/= 、%= |
15 | 复合赋值运算符 | +=、-=、<<=、>>= |
16 | 扩展赋值运算符 | >>>=、&=、^=、|= |
小技巧:在不确定优先级时使用()来确定运算的优先级!