3.1 运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1) 算术运算符
2) 赋值运算符
3) 关系运算符 [比较运算符]
4) 逻辑运算符
5) 位运算符 [需要二进制基础]
6) 三元运算
3.2 算术运算符
算术运算符是对数值类型的变量进行运算的
- 当对一个数取模时,可以等价a%b=a-a/b*b,这样我们可以看到取模的一个本质运算。
- 自增: ++作为独立的语句使用:
前++和 后++都完全等价于i=i+1;
作为表达式使用:
前++∶ ++i 先自增后赋值
后++: i++ 先赋值后自增
3.3 关系运算符(比较运算符)
3.3.1 介绍
1) 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
2) 关系表达式 经常用在 if 结构的条件中或循环结构的条件中
3.4 逻辑运算符
3.4.1介绍 用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。
3.4.2逻辑运算符
1) 短路与 && , 短路或 ||, 取反 !
2) 逻辑与 &, 逻辑或 |, ^ 逻辑异 或
说明逻辑运算规则:
1) a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
2) a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
3) a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
4) a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
5) !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
6) a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
3.4.1&& 和 & 使用区别
1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率
3) 开发中, 我们使用的基本是使用短路与&&,
3.4.2 || 和 | 使用区别
1) ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
2) | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
3) 开发中,我们基本使用 | |
3.5赋值运算符的分类
3.5.1复合赋值运算符
a += b; [等价 a = a + b; ]
a -= b; [等价 a = a - b; ]
3.5.2赋值运算符特点
1) 运算顺序从右往左 int num = a + b + c;
2) 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值 int num = 20; int num2= 78 * 34 - 10;
int num3 = a;
3) 复合赋值运算符等价于下面的效果 比如:a+=3;等价于 a=a+3; 其他类推
4) 复合赋值运算符会进行类型转换。 byte b
3.6 三元运算符
4.6.1基本语法 条件表达式 ? 表达式 1: 表达式 2;
运算规则:
1. 如果条件表达式为 true,运算后的结果是表达式 1;
2. 如果条件表达式为 false,运算后的结果是表达式 2;
3.7 标识符的命名规则(必须遵守)
- 由26个英文字母大小写,0-9,_或$组成
- 数字不可以开头。int 3ab= 1; //错误
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。int totalNum =10;int n = 90
- 标识符不能包含空格。int a b = 90;
3.8标识符命名规范
1) 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm
2) 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰] 比如: TankShotGame
3) 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小 驼峰, 简称 驼峰法] 比如: tankShotGame
4) 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
3.9进制
3.9.1 进制介绍 对于整数,有四种表示方式:
二进制:0,1 ,满 2 进 1. 以 0b 或 0B 开头。 如0b101
十进制:0-9 ,满 10 进 1。
八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。 010
十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大
3.9.1原码、反码、补码(
- 二进制的最高位是符号位:0表示正数,1表示负数 (口诀 : 0->0 1->-)
- 正数的原码,反码,补码都一样(三码合一)
- 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
- 负数的补码=它的反码+1,负数的反码=负数的补码-1
- O的反码,补码都是0
- java没有无符号数,换言之,java中的数都是有符号的
- 在计算机运算的时候,都是以补码的方式来运算的.
- 当我们看运算结果的时候,要看他的原码(重点)
3.9.2 位运算符
(1 为真, 0为假)
按位与& : 两位全为1,结果为1,否则为0
按位或 | : 两位有一个为1,结果为1,否则为0
按位异或 ^ : 两位一个为0,一个为1,结果为1,否则为0
按位取反~: 0->1,1->0
1) 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
2) 算术左移 <<: 符号位不变,低位补 0
3) >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
4) 特别说明:没有 <<< 符号
示例:
1) int a=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 = 0 ;
2) int c=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4 。