运算符介绍
是一种特殊符号,用于数据运算、赋值、比较
算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
三元运算符
算术运算符
介绍
对数值类型进行运算,使用较多
算术运算符一览
案例演示
+,-,*,/,%。++,--
自增:++
作为独立语句使用:
++i:先自增后赋值
i++:先赋值后自增
--,+,-,*同理
面试题与练习
ArithmeticOperatorExercise01.java
ArithmeticOperatorExercise02.java
关系运算符
介绍
结果都是布尔类型;关系表达式经常在if结构或循环结构中出现。
关系运算符一览
案例演示
细节说明
关系运算结果是布尔型
关系运算符组成的表达式,我们称为关系表达式
比较运算符"==" 不能写成"="
逻辑运算符
介绍
用于连接多个条件(多个关系表达式),最终结果是布尔值
逻辑运算符一览
分为两类,分别为
短路与&&,或||,取反!
逻辑与&,或|,逻辑异或^
逻辑运算规则:
a&b:&叫逻辑与:当a和b同时为true ,则结果为true,否则为false
a&&b :&&叫短路与:当a和b同时为true,则结果为true,否则为false
a|b:|叫逻辑或:当a和b,有一个为true则结果为true,否则为false
allb:|叫短路或:当a和b ,有一个为true ,则结果为true,否则为false
!a:叫取反,或者非运算。当a为true,则结果为false,当a为false是,结果为true
a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
短路与和逻辑与
区别
&&短路与:如果第一个条件为假,则第二个条件不会判断,效率高
&逻辑与:不管第一个条件是不是假,第二个都要判断,效率低
开发中基本都使用短路,效率高
案例
短路或和逻辑或
区别
&&短路与:如果第一个条件为真,则第二个条件不会判断,效率高
&逻辑与:不管第一个条件是不是真,第二个都要判断,效率低
开发中基本都使用短路,效率高
案例
取反操作
异或操作
a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
取反和异或案例演示
练习
答案:6,6; 6,5; 11,6; 11,5;
如果有赋值语句,则先赋值,再看这个变量是否为真
答案:50
赋值运算符
介绍
赋值运算就是将某个运算后的值,赋给指定变量
赋值运算符分类
基本赋值运算符 '=' int a = 10;
复合赋值运算符
+=,-=,*=,/=,%=
a += b; [等价于a = a + b;]
a -= b; [等价于a = a - b;]
其他同理
案例演示
赋值运算符的特点
运算顺序从右往左 int num = a+b+c,先计算a+b+c,然后赋给num
赋值运算符的左边只能是变量,右边可以是变量、表达式、常量:int n = 20; int n = 2*2+1; int n = a;
复合赋值运算符等价于下面效果
a+=3;等价于a=a+3;
复合赋值运算符会进行类型转换
byte b = 2; b += 3; b++
三元运算符
基本语法
条件表达式 ? 表达式1 : 表达式2;
运算规则
条件表达式为真,则运算后的结果是表达式1;
条件表达式为假,则运算后的结果是表达式2;
案例演示
细节说明
表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)
三元运算符可以转换成if--else语句
练习
运算符优先级
不同运算符有不同优先级,也就是表达式的运算顺序
只有单目运算符、赋值运算符是从右向左计算的
下表从上到下优先级降低
用久了自然熟悉
标识符命名规则和规范
介绍
Java对各种变量、方法和类等命名时使用的字符序列称为标识符
凡是自己可以起名字的地方都叫标识符
命名规则
由字母(大小写),0-9,_或$组成
数字不能开头
不能使用关键字和保留字,可以包含
java严格区分大小写,长度无限制
标识符不能包含空格
练习
命名规范
包名:多个单词组成时所有字母小写。比如:com.ly.pro
类名、接口名:多个单词组成时,所有单词首字母大写。比如:MyFirstProject
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个开始之后每个单词首字母大写。例如:newFirstObject
常量名:所有字母大写。多单词时每个单词用下划线连接。例如:SCREEN_WIDTH
其他参考文档
关键字
定义:被Java语言赋予了特殊含义,用作专门用途
特点:关键字所有字母都小写
保留字
当前版本尚未使用,后续版本可能作为关键字使用
键盘输入语句
介绍
在编程中,需要用户输入的数据,可以使用键盘输入语句来获取。Input.java,需要一个扫描器,也就是Scanner
步骤:
导入该类所在包,java.util.*
创建该类对象(声明变量)、
调用里面的功能
案例演示
进制
介绍
对于整数,有四种表示方式:
二进制:0,1,满二进一,以0b或0B开头
十进制:0-9,满十进一
八进制:0-7,满八进一,以0开头
十六进制:0-9和a(10)-f(15),满十六进一,以0x或0X开头,A-F不区分大小写。
案例说明
图示
进制的转换
二进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数- 1)次方,然后求和。
案例:将0b1011转换成十进制
0b1011 = 1 * 2的(1-1)次方 + 1 * 2的(2-1)次方+ 0 * 2的(3-1)次方 + 1 *2的(4-1)次方= 1+2+0+8 = 11
八进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数- 1)次方,然后求和。
案例:将0234转换成十进制
0234 = 4 * 8^0 + 3 * 8^1 + 2 * 8^2 = 4+24+128 = 156
十六进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数- 1)次方,然后求和。
案例:将0X23A转换成十进制
0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^2 = 10 + 48 + 512 = 570
练习
十进制转成二进制
规则:规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:请将34转成二进制
从下往上填
十进制转八进制
规则:规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:131转八进制
方法同上
十进制转十六进制
规则:规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:237转八进制
方法同上
练习
二进制转八进制
规则:从低位开始,将二进制每三位一组,转成对应八进制数即可,首位不足补0。
案例:0b11010101转八进制
0b11(3) 010(2) 101(5) => 0325
二进制转十六进制
规则:从低位开始,将二进制每四位一组,转成对应八进制数即可,首位不足补0。
案例:0b11010101转八进制
0b1101(D) 0101(5) => 0XD5
练习
八进制转二进制
规则:将八进制数每1位,转成对应的一个3位二进制数即可。首位0可删除
案例:0237转成二进制
02(010) 3(011) 7(111) => 0b10011111
十六进制转二进制
规则:将八进制数每1位,转成对应的一个4位二进制数即可。首位0可删除
案例:0x23b转成二进制
0x2(0010) 3(0011) b(1011) => 0b1000111011
练习
原码、反码、补码
二进制的最高位是符号位:0是正数,1是负数
正数的原码,反码,补码都一样(三码合一)
负数的反码=它的原码符号位不变,其他位取反
负数的补码=它的反码+1,负数的反码=负数的补码-1
0的反码补码都是0
java没有无符号数
计算机运算时,都是以补码的方式来运算的
当我们看运算结果的时候,要看它的原码
位运算
七个位运算(&,|,^,~,>>,<<,>>>)
按位与&,按位或|,按位异或^,按位取反~,运算规则如下
算术右移>>:低位溢出,符号不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
>>>逻辑右移,也叫无符号右移:低位溢出,高位补0
特别说明:没有<<<符号
案例