- 一 运算符和表达式
- 1.运算符
- 2. 表达式
- 3. 运算符的优先级与结合性
- 二 Java运算符一览
- 三 Java运算符详解
- 1. 算术运算符*
- 2. 自增、自减运算符
- 3. 复合赋值运算符
- 4. 关系运算符*
- 四 Java运算符与C总结
- 1. 算术运算符
- 2. 关系运算符
- 其余

一 运算符和表达式 1.运算符本文请与大一C语言挣扎之路3(运算符)对照使用
①在C语言中,我们使用运算符(Operator)进行数据的运算,实现对数据的各种操作。
②使用运算符就必须要有运算对象。运算对象也称为操作数(Operand),可以是常量、变量、函数和其他表达式。
③根据所需运算对象(操作数)的个数,运算符又分为3类:
单目运算符(Unary Operator )(操作数的个数为1,如:取负值运算符等);
双目运算符(Binary Operator )(操作数的个数为2,如:加、减运算符等);
三目运算符(Ternary Operator)(操作数的个数为3,如:条件运算符)。
①表达式(Expression)由运算符和运算对象组成。
②最简单的表达式可以只包括一个运算对象,
复杂的表达式可以是运算符和运算对象的任意组合。
根据运算规则,任何一个表达式都有一个确定的值,称为表达式的值。
- 当程序中出现一个包含有多个运算符的复杂表达式时,为了准确理解该表达式的语义,通常需要将其划分成若干简单的子表达式的组合,这就必须依靠运算符的两个重要属性:优先级(Precedence)和结合性(Associativity);
- Java语言将运算符分为14个优先级,级数越小的运算符优先级越高;
- 运算符的结合性只有左结合和右结合两种;
| Java语言运算符优先级表 | ||||||
|---|---|---|---|---|---|---|
| 优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 运算符类型 | |
| 1 | [ ] | 数组元素下标 | 数组名 | 左到右 | / | |
| () | 圆括号 | (表达式)/函数名(形参表) | ||||
| . | 成员选择(对象) | 对象.成员名 | ||||
| 删去了指针-> | ||||||
| 2 | - | 负号运算符 | -表达式 | 右到左 | 单目运算符 | |
| ~ | 按位取反运算符 | ~表达式 | ||||
| ++ | 自增运算符 | ++变量名/变量名++ | ||||
| -- | 自减运算符 | --变量名/变量名-- | ||||
| * | 取值运算符 | *指针变量 | ||||
| & | 取地址运算符 | &变量名 | ||||
| ! | 逻辑非运算符 | !表达式 | ||||
| (类型) | 强制类型转换 | (数据类型)表达式 | ||||
| sizeof | 长度运算符 | sizeof(表达式) | ||||
| 3 | * | 乘法 | 表达式*表达式 | 左到右 | 双目算数运算符 | |
| / | 除法 | 表达式/表达式 | ||||
| % | 整除求余(取模) | 整型表达式%整型表达式 | ||||
| 4 | + | 加法 | 表达式+表达式 | 左到右 | 双目算数运算符 | |
| - | 减 | 表达式-表达式 | ||||
| 5 | << | 左移位 | 变量<<表达式 | 左到右 | 双目位运算符 | |
| >> | 右移位 | 变量>>表达式 | ||||
| 6 | > | 大于 | 表达式>表达式 | 左到右 | 双目关系运算符 | |
| >= | 大于等于 | 表达式>=表达式 | ||||
| < | 小于 | 表达式<表达式 | ||||
| <= | 小于等于 | 表达式<=表达式 | ||||
| 7 | == | 等于 | 表达式==表达式 | 左到右 | 双目关系运算符 | |
| != | 不等于 | 表达式!= 表达式 | ||||
| 8 | & | 按位与 | 表达式&表达式 | 左到右 | 双目位运算符 | |
| 9 | ^ | 按位异或 | 表达式^表达式 | 左到右 | ||
| 10 | | | 按位或 | 表达式|表达式 | 左到右 | ||
| 11 | && | 逻辑与 | 表达式&&表达式 | 左到右 | 双目逻辑运算符 | |
| 12 | || | 逻辑或 | 表达式||表达式 | 左到右 | ||
| 13 | ?: | 条件运算符 | 表达式1?表达式2: 表达式3 | 左到右 | 三目运算符(唯一) | |
| 14 | = | 赋值运算符 | 变量=表达式 | 右到左 | 双目运算符 | |
| += | 加后赋值 | 变量+=表达式 | 算数复合赋值运算符 | |||
| -= | 减后赋值 | 变量-=表达式 | ||||
| *= | 乘后赋值 | 变量*=表达式 | ||||
| /= | 除后赋值 | 变量/=表达式 | ||||
| %= | 取模后赋值 | 变量%=表达式 | ||||
| <<= | 左移后赋值 | 变量<<=表达式 | 位复合赋值运算符 | |||
| >>= | 右移后赋值 | 变量>>=表达式 | ||||
| &= | 按位与后赋值 | 变量&=表达式 | ||||
| ^= | 按位异或后赋值 | 变量^=表达式 | ||||
| |= | 按位或后赋值 | 变量|=表达式 | ||||
| 15 | , | 逗号运算符 | 表达式,表达式 | 左到右 | 顺序求值运算符 | |
三 Java运算符详解 1. 算术运算符*简记运算符优先级就是:! >算术运算符 >关系运算符 >&& >|| >赋值运算符
①算术(Arithmetic)运算包括加、减、乘、除、求余、取负数等,分别使用运算符+、-、*、/、%和-来表示
②/除法运算符的两种含义:整数除和实数除
(1)当两个整数相除时,结果仍为整数,即只保留整数商,而舍去小数部分;
(2)只要两个操作数中有一个是实数,“/”都表示实数除,得到的是真实的小数结果;
与C语言区别在于
③在Java中+号的含义除了“加减乘除的加”、“正负的正”,还有充当连接符的作用。
任意数据类型的数据与字符串相连接的时候,那个
+号就是连接符
public class HelloWorld {public static void main(String[] args){System.out.println(1+"abc");
}
}
//输出1abc④在Java中,针对byte类型和short类型的时候,当赋值运算符右侧存在变量时,均报错,而C正常运行
即:当定义只要byte类型和short类型的时候,右边有一个是变量,就会编译报错
public class HelloWorld {public static void main(String[] args) {byte a=1;
a=a+1; //报错
System.out.println(a);
}
}2. 自增、自减运算符① 变量自增(Increment)运算符++和自减(Decrement)运算符--,其作用是使被操作的变量的值增加1或减少1。作用主要是提高程序的编译效率,也增加了程序的简洁性。
② 是单目运算符,只需要一个操作数,而且操作数必须是变量。它们的优先级与其他单目运算符一样,高于所有双目运算符,且具有右结合性。
③既可以放在变量的前面,称为前++(Prefix Increment)和前- -(Prefix Decrement);也可以放在变量的后面,称为后++(Postix Increment)和后- -(Postix Decrement)结果不同。
格式如下:
++<变量>、--<变量>、<变量>++<变量>--④前++、**前–**表示先对变量进行自增、自减1运算,再将变量更新后的值作为自增、自减表达式的值。后++、**后- -**表示先将变量原来的值作为自增、自减表达式的值,再对变量进行自增、自减1运算。
⑤只能操作变量,类似于(-b)--的格式是非法的。
⑥自增、自减运算符自带强制转换,即
byte a=1;
a++ //a=(byte)a+1从而保证不报错
3. 复合赋值运算符① Java语言还提供另一种形式的赋值运算符,称为复合赋值(Combined Assignment)运算符。它由双目运算符与双目赋值运算符一起构成。包括+=、-=、*=、/=、%=
② 格式如下:
<变量><双目赋值运算符>=<表达式>a*=a+1上述语法等价于:
<变量>=<变量><双目运算符><表达式>a=a*(a+1)③同样具有强制转换
byte a=1;
a+=1 //a=(byte)a+14. 关系运算符*关系(Relational)运算是用来比较两个操作数的值的运算,比较的结果是一个逻辑值,即只能是“真”或“假”。若比较条件得到满足,则结果为真;否则,结果为假。C语言中关系运算共6种,包括:小于、小于或等于、大于、大于或等于、等于、不等于,分别使用运算符<、>、>=、==和!=。
与C语言区别在于
关系运算符得出来的结果一定是boolean类型的数据,也就是说要么是true,要么是false
①在Java中+号的含义除了“加减乘除的加”、“正负的正”,还有充当连接符的作用。
任意数据类型的数据与字符串相连接的时候,那个+号就是连接符。
②当定义只要byte类型和short类型的时候,右边有一个是变量,就会编译报错
关系运算符得出来的结果一定是boolean类型的数据,也就是说要么是true,要么是false
①自增、自减运算符、复合赋值运算符自带强制转换,对于byte类型和short类型不会编译报错
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:自掘Java----③(运算符与C的区别)待续-创新互联
文章链接:http://www.jxjierui.cn/article/djgpch.html


咨询
建站咨询
