4.1 运算符介绍
分为算术、赋值、关系(比较)、逻辑、位、三元运算符,运算符是一种特殊符号,用以表示数据的运算、赋值和比较等。
4.2 算术运算符 ArithmeticOperator
细节说明
1. 对于除号 / ,整数除以整数结果为整数(舍弃小数部分);整数与小数相除结果是小数
2. 取模,如a %b等价于a-a/b*b,其中a/b表示商舍弃小数。余数=被除数-商*除数
3. 当++,作为一个独立语言使用时,不管是++i 还是 i++ 都是一样的;但当作为表达式使用时,j++ = j ++j = j +1
4.3 关系运算符 RelationalOperator
结果为boolean型(true or false);长用于if结构或循环结构
4.4 逻辑运算符 LogicOperator
用于连接多个条件(多个关系表达式),最终结果也是一个boolean值
分两组学习
1)短路与 && 短路或|| 取反! 效率高(常用)
2)逻辑与 & 逻辑或 | 逻辑异或^(两个不同时,结果为true,否则为false)
&& 和 &区别
1. 短路与&&:如果第一个条件为false,则不判断第二个条件,最终结果为false
2. 逻辑与&: 不管第一个条件是否为false,都要判断第二个
|| 和 | 区别
1. 短路或||:如果第一个条件为true,则不判断第二个条件,最终结果为true
2. 逻辑或| :不管第一个条件是否为true,都要判断第二个
4.5 赋值运算符 AssignOperator
赋值运算符就是将某个运算后的值,赋给指定的变量。分为基本赋值运算符 = 和 复合赋值运算符 += -= *= /= %=
特点
1. 运算顺序从右 到 左
2. 左边只能是变量。右边可以时变量、表达式、常量值
3. 复合赋值运算符 如 a+=3 等价于 a=a+3;
4. 会进行类型转换 byte b=3;b+=2//b = (byte)(b + 2)
4.6 三元运算符 TernaryOperator
基本语法
条件表达式 ?表达式1 :表达式2
运算规则【一真大师,1 true】
1. 如果条件表达式为true,运算后的结果是表达式1
2.如果条件表达式为false,运算后的结果是表达式2 a < b ? a++ : b--;
细节
1. 表达式1 和 表达式2 要为可以赋给接收变量的类型
int a = 3, b = 8; int c = a > b ? (int)1.1 : (int)3.4; double d = a > b ? a : b + 3;
2. 可以转成if- else 语句
4.7 运算符优先级
4.8 标识符的命名规则和规范
规则(必须遵守)
1. 由26个英文字母大小写,0-9,_或$ 组成
2. 数字不可以开头
3. 不可以使用关键字和保留字,但能包含关键字和保留字
4. 严格区分大小写,长度无限制
5. 标识符不能含空格
规范(更加专业)
1. 包名:多单词组成时所有字母都小写 aaa.bbb.ccc//如com.hsp.crm
2. 类名、接口名:多单词组成时,所有单词首字母大写(大驼峰)
3. 变量名、方法名:多单词组成时,第一个单词首字母小写,其余首字母大写(驼峰法)
4. 常量名:所有字母都大写,多单词时 _ 连接
4.9 关键字
4.10 保留字
4.11 键盘输入语句
在编程中,需要接受用户的输入数据,就可以使用键盘输入语句来获取。Input.java,需要一个 扫描器(对象),就是Scanner
步骤
1. 导入该类所在包 java.util.* import java.util.Scanner;
2. 创建该类对象(声明变量) Scanner myScanner = new Scannner(System.in);
int age = myScanner.nextInt();接受用户输入
3. 调用里面的功能
4.12 进制(基本功)
对于整数有四种进制
1) 二进制 0,1 满2进1,以0b 或 0B开头 int n1 = 0b1010;
2) 十进制
3) 八进制 0 - 7 满8进1, 以数字0开头 int n2 = 01010;
4) 十六进制 0 - 9及A(10) - F(15),满16进1,以0x 或 0X开头 int n3 = 0x10101
4.13 进制的图示
4.14 进制的转换(基本功)
1)二、八、十六 转 十
2)十 转 二、八、十六
3)二 转 八、十六
4)八、十六 转 二
4.15 二进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。0b1011 = 1 * 2^0 + 1 * 2^1 + 0 + 1 * 2^3
4.16 八进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
4.17 十六进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
4.18 十进制转二进制
规则:将该数不断除以2,直至商为0,然后将每步得到的余数倒过来就是对应的二进制
4.19 十进制转八进制
规则:将该数不断除以8,直至商为0,然后将每步得到的余数倒过来就是对应的二进制
4.20 十进制转十六进制
规则:将该数不断除以16,直至商为0,然后将每步得到的余数倒过来就是对应的二进制
4.21 二进制转八进制
规则:从低位开始,将二进制数每3位一组,转成对应的八进制数
4.22 二进制转十六进制
规则:从低位开始,将二进制数每4位一组,转成对应的八进制数
4.23 八进制转二进制
规则:将八进制数每1位数转成对应的3位的二进制数
4.24 十六进制转二进制
规则:将十六进制数每1位数转成对应的4位的二进制数
4.25 位运算的思考题
4.26 二进制在运算中的说明 Binary
4.27 原码、反码、补码(重难点)
4.28 位运算符
一共有7个位运算(&、|、^ 、~、>>>、<<<、>>>)
2 & 3 = ??
分析:补码运算,结果看原码
2的补码(三码合一):00000000 00000000 00000000 00000010
3的补码(三码合一):00000000 00000000 00000000 00000011
2 & 3: 00000000 00000000 00000000 00000010(运算后的补码,结果看原码,三码合一所以结果也是这个)
>>>、<<<、>>>,运算规则:
1. 算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
int a = 1 >> 2; //1 => (省略了前三个字节)00000001 => 00000000 本质1/2/2=0
2. 算术左移<<:符号位不变,低位补0
int a = 1 << 2; //1 => (省略了前三个字节)00000001 => 00000100 本质1*2*2=4
3. >>> :逻辑右移也叫无符号右移,规则位:低位溢出,高位补0