一、运算符的介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
其分类如下:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 三元运算符
二、常见的运算符
1、算术运算符
算术运算符是Java中对数值类型的变量进行基本运算的
运算符 | 运算 | 示例 | 结果 |
---|---|---|---|
+ | 正 | +10 | 1 |
- | 负 | a=10;-a | 10 |
- | 加 | 10+10 | 20 |
- | 减 | 20-10 | 10 |
* | 乘 | 2*10 | 20 |
/ | 除 | 10/2 | 5 |
% | 求余 | 3%2 | 1 |
++ | 前自增 | a=1;b=++a; | a=2;b=2 |
++ | 后自增 | a=1;b=a++; | a=2;b=1 |
- - | 前\后自减 | a=1;b=- -a; | a=0;b=0 |
- - | 前\后自减 | a=1;b=a- -; | a=0;b=1 |
+ | 字符串相加 | “ab”+“cd” | “abcd” |
注意事项:
- 对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分
- 当 自增\自减 当做一个独立语言使用时,++i和i++是等价的
- 当 自增\自减 作为一个表示式时,++i和i++是不等价的
System.out.println(3/2); //1
System.out.println(10.0/4); //2.5
//i++与++i 独立使用结果是一样
int i=3,j=3;
i++;
++j;
System.out.println(i); //4
System.out.println(j); //4
//i++与++i 当做表达式使用时结果不一样
int a=3,b=3;
a = a++;
b = ++b;
System.out.println(a); //3
System.out.println(b); //4
2、关系运算符
关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
关系表达式 经常用在 if 结构的条件中或循环结构的条件中
运算符 | 运算 | 示例 | 结果 |
---|---|---|---|
== | 恒等于 | 1==2 | false |
!= | 不等于 | 1!=2 | true |
< | 小于 | 1<2 | true |
> | 大于 | 1>2 | false |
<= | 小于等于 | 1<=2 | false |
>= | 大于等于 | 1>=2 | true |
3、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值
a | b | a&b | a&&b | a|b | a||a | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
说明:a&b和a&&b的结果一样,但a&&b的效率更高,a|b和a||b同理。
4、赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量
基本运算符分为基本运算符和复合运算符
- 基本运算符:=
- 复合运算符:+= ,-= ,*= , /= ,%= 等
注意事项:
- 运算顺序从右往左
- 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
- 复合赋值运算符等价于下面的效果
- 复合赋值运算符会进行类型转换
int a = 1;
a += 1; //等价于a = a + 1; 其他的同理
//复合运算符
byte b = 3;
b += 2; //等价 b = (byte)(b + 2);
b++; // b = (byte)(b+1);
5、三元运算符
基本语法:条件表达式? 表达式 1: 表达式 2;
运算规则:
- 如果条件表达式为 true,运算后的结果是表达式 1;
- 如果条件表达式为 false,运算后的结果是表达式 2;
int x=1,y=2;
int z = x>y ? x++:y--; //返回表达式2
System.out.println(x); //1
System.out.println(y); //1
//因为是先y--,所以返回y的值给z,再做y-1
System.out.println(z); //2
注意事项:
- 表达式 1 和表达式 2 要为可以赋给接收变量的类型(可以自动转换或强行转换)
int x=1,y=2;
int a = x>y ? x:y; //正确
int b = x>y ? 1.1:2.2; //错误
int c = x>y ? (int)1.1:(int)2.2; //正确
double c = x>y ? x:y; //正确 int -> double
三、运算符优先级
运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序,下表中只有单目运算符和赋值运算符是从右到左,其他则是从左到右。
顺序 | 运算符 | 优先级 |
---|---|---|
\ | . () {} ; , | 1 |
R->L | ++ - - ~ !(data type) | 2 |
L->R | * / % | 3 |
L->R | + - | 4 |
L->R | << >> >>>位移 | 5 |
L->R | < > <= >= instanceof | 6 |
L->R | == != | 7 |
L->R | & | 8 |
L->R | ^ | 9 |
L->R | | | 10 |
L->R | && | 11 |
L->R | || | 12 |
L->R | ? : | 13 |
R->L | = += -= *= /= %= <<= =>> >>>= &= ^= |= | 14 |
四、标识符命名规则与规范
标识符概念:
- Java对各种变量、方法和类等命名使用的字符序列称为标识符
- 凡是自己可以起名字的地方都叫标识符
标识符的命名规则(必须遵守):
- 由26个英文字母大小写,0-9,下划线等
- 数字不可以开头
- 不可以使用关键字和保留字
- Java中严格区分大小写,长度无限制
- 标识符不能包含空格
标识符命名规范(专业)
- 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm 2)
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰] 比如: TankShotGame
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小 驼峰, 简称 驼峰法] 比如: tankShotGame
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 比如 :定义一个所得税率 TAX_RATE