一 运算符和表达式 1.运算符本文请与大一C语言挣扎之路3(运算符)对照使用
①在C语言中,我们使用运算符(Operator)进行数据的运算,实现对数据的各种操作。
②使用运算符就必须要有运算对象。运算对象也称为操作数(Operand),可以是常量、变量、函数和其他表达式。
③根据所需运算对象(操作数)的个数,运算符又分为3类:
单目运算符(Unary Operator )(操作数的个数为1,如:取负值运算符等);
双目运算符(Binary Operator )(操作数的个数为2,如:加、减运算符等);
三目运算符(Ternary Operator)(操作数的个数为3,如:条件运算符)。
①表达式(Expression)由运算符和运算对象组成。
②最简单的表达式可以只包括一个运算对象,
复杂的表达式可以是运算符和运算对象的任意组合。
根据运算规则,任何一个表达式都有一个确定的值,称为表达式的值。
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+1
4. 关系运算符*关系(Relational)运算是用来比较两个操作数的值的运算,比较的结果是一个逻辑值,即只能是“真”或“假”。若比较条件得到满足,则结果为真;否则,结果为假。C语言中关系运算共6种,包括:小于、小于或等于、大于、大于或等于、等于、不等于,分别使用运算符<
、>
、>=
、==
和!=
。
与C语言区别在于
关系运算符得出来的结果一定是boolean
类型的数据,也就是说要么是true
,要么是false
①在Java中+
号的含义除了“加减乘除的加”、“正负的正”,还有充当连接符的作用。
任意数据类型的数据与字符串相连接的时候,那个+
号就是连接符。
②当定义只要byte
类型和short
类型的时候,右边有一个是变量,就会编译报错
关系运算符得出来的结果一定是boolean
类型的数据,也就是说要么是true
,要么是false
①自增、自减运算符、复合赋值运算符自带强制转换,对于byte
类型和short
类型不会编译报错
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧