本系列博客是韩顺平老师java基础课的课程笔记,B站:课程链接,吐血推荐的一套全网最细java教程,获益匪浅!
1. 运算符介绍
运算符是一种特殊的符号,用以表示数据的运算,赋值和比较
2. 算数运算符
- 对数值类型的变量进行运算,是java中最多的
- 除法细节:10/4=2 (向下取整) 10.0/4=2.5 double d=10/4=2.0
- 取余细节:10%3=1 -10%3=-1 10%-3=1(java中%的本质是:a%b=a-a/bb)10%-3=10-10/(-3)(-3)=1
- ++细节❤:
- 当++作为独立语句使用时,++i 和 i++ 是完全等价的
- 当++作为表达式使用时,++i等价于两条语句:先自增再赋值
- 面试题:把i赋值给i时,会使用一个临时变量temp
3. 关系/比较运算符
关系运算符的结果都是布尔型的,经常用在if语句或者循环语句中
4. 逻辑运算符
- 用于连接多个表达式,运算结果是布尔值
- 运算规则
-
- a&b : &叫逻辑与:规则:当a和b同时为true则结果为true,否则为false
-
- a&&b : &&叫短路与:规则:当a和b同时为true则结果为true,否则为false (补充一下全名:& :非短路逻辑与
&& : 短路逻辑与)
-
- alb:l叫逻辑或, 规则:当a和b.有一个为true .则结果为true,否则为false
-
- allb:I叫短路或,规则:当a和b,有一个为true则结果为true,否则为false
-
- ~a:叫取反,或者非运算。当a为true,则结果为false,当a为false是,结果为true
-
- a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
- 细节
-
- 逻辑与和短路与的区别:两者的运算结果是一样的,但是对于短路与&&而言,如果第一个条件为false,后面的条件不会再判断;对于逻辑与&而言,第一个条件为false时,后面的条件仍然会判断。
-
- 短路或和逻辑或的区别:两者的运算结果是一样的,但是对于短路或而言||,如果第一个条件为true,后面的条件不会再判断;对于逻辑或|而言,第一个条件为true时,后面的条件仍然会判断
-
因此工程上一般用短路与和短路或,因为他们的效率更高。
5. 赋值运算符
- 基本赋值运算符:a=10
- 复合赋值运算符:+=,-=,*= 等
- 细节
- 进行复合赋值运算时,实际上会有一个强制类型转换。这个例子中直接用b=b+2就会报错,因为把int类型赋值给byte类型。
6. 三元运算符
- 基本语法:条件表达式? 表达式1:表达式2
- 运算规则:如果条件表达式是true,运算结果是表达式1;如果条件表达式为false,则运算结果为表达式2
- 细节:
-
- 表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)2. 三元运算符可以转成if else语句
-
- 面试题
7. 运算符优先级
从上至下,优先级逐渐降低,只有单目运算和赋值运算时从右至左的
8. 标识符的命名规则和规范
- 标识符:对各种变量,方法还有类等命名时使用的字符序列称为标识符
- 规则(必须遵守)
- 由26个英文字母大小写,0-9,_ 或$组成
- 数字不可以开头
- 不可以使用关键字(已经被java的设计者使用了)和保留字(以后会被java设计者使用的),但是可以包含关键字和保留字(abclass)
- 标识符严格区分大小写,长度没有限制
- 标识符不能包含空格
- 规范(最好遵守)
- 包名:由多个单词组成时,所有字母都要小写
- 类名,接口名:由多个单词组成时,所有单词的首字母大写ThisNewClass
- 变量名,方法名:多个单词组成时,第一个单词首字母大写,第二个单词每个单词的首字母大写:tankShotGame
- 常量名:所有字母都要大写,多个单词之间每个单词用下划线连接:TAX_RATE
9. 键盘输入语句
- 引入Scanner所在的包 import java.util.Scanner
- 创建 Scanner的对象 Scanner myScanner = new Scanner(System.in);
- 接受用户的输出 String name=myScanner .next()
10. 进制❤
- 对于整数有4种表示方式
- 二进制:以0b或者0B开头
- 十进制
- 八进制:以0开头表示
- 十六进制:0-9 A-F(a-f) 以0x或者0X开头
- 进制转换
-
- 其他进制转十进制:从最低位开始,每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
-
- 十进制转其他进制:将这个数不断除以8,知道商为0为止,然后将没步得到的余数倒过来,就是对应的二进制
-
- 二进制转其他进制
- 2->8: 从最低位开始,将二进制每三位一组,转成对应的八进制数即可
- 2->16: 从最低位开始,将二进制每四位一组,转成对应的八进制数即可
-
- 其他进制转二进制
- 8->2: 将八进制数的每一位转成一个3位的二进制数即可
- 16->2: 将十六进制的每一位转成一个4位数的二进制数即可
11. 位运算
- 原码,反码,补码❤
- 二进制的最高位为符号位
- 正数三码合一都一样
- 负数的反码=原码符号位不变,其他位取反
- 负数的补码=反码+1 反码=补码-1
- 0的反码补码全是0
- java中所有的数都是有符号的
- 计算机运算时,以补码的方式进行运算
- 当我们看结果的时候,要看他的原码(运算结束之后要把补码转为原码)
- 补码将正数和负数运算统起来
- 按位与&
- 按位或|
- 按位异或^
- 按位取反~
- 算术右移>>:符号位不变,低位溢出,高位用符号位补充;每移动1位,相当于除以一次2
- 算数左移<<:符号位不变,低位补0,每移动1位,相当于乘以1次2
- 逻辑右移>>>:无符号右移,低位溢出,高位补0。只有逻辑右移没有逻辑左移.
今天的课程可真算是查漏补缺了~很多收获,还上手做了几个算法题,感觉还可以。