一、运算符介绍
-
运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
1.算术运算符
2.赋值运算符
3.关系运算符[比较运算符]
4.逻辑运算符
5.位运算符[需要二进制基础]
6.三元运算符
二、算术运算符
-
介绍
算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。
-
算术运算符一览
运算符 运算 范例 结果 + 正号 +7 7 - 负号 b=11;-b -11 + 加 9+9 18 - 减 10-8 2 * 乘 7*8 56 / 除 9/9 1 % 取模(取余) 11%9 2 ++ 自增(前):先运算后取值 a=2;b=++a; a=3;b=3 ++ 自增(后):先取值后运算 a=2;b=a++; a=3;b=2 - - 自减(前):先运算后取值 a=2;b=- -a; a=1;b=1 - - 自减(后):先取值后运算 a=2;b=a- -; a=1;b=2 + 字符串相加 “sp”+“ssr” spssr
三、关系运算符
-
介绍
1.关系运算符的结果都是boolean型,也就是要么是true,要么是false
2.关系表达式经常用在if结构的条件中或循环结构的条件中
-
关系运算符一览
运算符 运算 范例 结果 == 相等于 8==7 false != 不等于 8!=7 true < 小于 8<7 false > 大于 8>7 true <= 小于等于 8<=7 false >= 大于等于 8>=7 true instanceof 检查是否是类的对象 "hsp"instanceof String true ps:一个等号是赋值,两个等号表示相等
四、逻辑运算符
-
介绍
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值,
-
逻辑运算符一览
逻辑与 短路与 逻辑或 短路或 取反 逻辑异或 a b a&b a&&b a|b a||b !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同时为true ,则结果为true,否则为false
-
a&&b : &&叫短路与:当a和b同时为true ,则结果为true,否则为false
-
a|b:|叫逻辑或:当a和b,有一个为true ,则结果为true,否则为false
-
a||b:||叫短路或,规则:当a和b,有一个为true ,则结果为true,否则为false
-
!a: ! 叫取反,或者非运算。当a 为true,则结果为false,当a为false是,结果为true
-
ab:叫逻辑异或,当a和b 不同时,则结果为true,否则为false
-
-
&&与&的区别:
1.&&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
2.&逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
3.开发中,我们使用的基本是短路与&&,效率高
-
||与|的区别
1)||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高2)|逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
3)开发中,我们基本使|| -
instanceof运算符
其左边的操作元是一个对象,右边是一个类。当左边的对象是右边的类或子类创建的对象时,该运算符的结果为true,否则为false。
五、赋值运算符
-
介绍
赋值运算符就是将某个运算后的值,赋给指定的变量。
-
赋值运算符的分类
-
基本赋值运算符=
-
复合赋值运算符
+=, -=,*=,/=,%=等
a+=b;//等价于a=a+b;
-
-
赋值运算符特点
1)运算顺序从右往左int num = a+b+c;
2)赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
int num1 = 20; int num2 = 78*34 -10; int num3 = a;
3)复合赋值运算符等价于下面的效果
a+=3;//等价于a=a+3;
4)复合赋值运算符会进行类型转换。
byte b = 2; b+=3; //b=(byte)(b+2); b++;
六、三元运算符
-
基本语法
条件表达式?表达式1:表达式2;
-
运算规则:
1.如果条件表达式为true,运算后的结果是表达式1;
2.如果条件表达式为false,运算后的结果是表达式2;
int a = 10; int b = 99; int result = a > b ? a++:b--;//99
-
使用细节
1.表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)2.三元运算符可以转成if–else语句
七、运算符优先级
运算符优先级
1.运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。同级按从左到右的顺序,只有单目运算符、赋值运算符是从右向左运算的。
2.梳理小结:小伙伴有一个大致印象,使用多了,就熟悉
1)(),{}等
2)单目运行+±-
3)算术运算符
4)位移运算符
5)比较运算符
6)逻辑运算符
7)三元运算符
8)赋值运算符
. () {} : , | |
---|---|
R->L | ++ – ~ ! |
L->R | * / % |
L->R | + - |
L->R | << >> >>>(位移) |
L->R | < > <= >= instanceof |
L->R | == != |
L->R | & |
L->R | ^ |
L->R | | |
L->R | && |
L->R | || |
L->R | ? : |
R->L | = *= /= %= |
+= -= <<= >>= | |
>>>= &= ^= |= |
八、标识符的命名规则和规范
-
标识符概念
-
Java 对各种变量、方法和类等命名时使用的字符序列称为标识符
-
凡是自己可以起名字的地方都叫标识符
-
-
标识符的命名规则(必须遵守)
-
由26个英文字母大小写,0-9,或$组成
-
数字不可以开头。
-
不可以使用关键字和保留字,但能包含关键字和保留字。
-
Java中严格区分大小写,长度无限制。
-
标识符不能包含空格。
-
-
标识符命名规范[更加专业]
- 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如com.hsp.crm
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰]
比如: TankShotGame - 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个
单词首字母大写:xxxYyyZzz[小驼峰,简称驼峰法]
比如:tankShotGame - 常量名:所有字母都大写。多单词时每个单词用下划线连接: XXx_YYY_ZZZ
比如:定义一个所得税率TAX_RATE - 后面我们学习到类,包,接口,等时,我们的命名规范要这样遵守,更加详细的
看文档.
-
关键字的定义和特点(不用背)
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
1.用于定义数据类型的关键字
关键字 class interface enum byte short int long float double char boolean void 2.用于定义数据类型值的关键字
关键字 true false null 3.用于定义流程控制的关键字
关键字 if else switch case default while do for break continue return
九、键盘输入语句
-
介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取.则需要一个扫描器(对象),就是Scanner
-
步骤:
1)导入该类的所在包, java.util.*
2)创建该类对象(声明变量)
3)调用里面的功能
import java.util.Scanner; //表示把java.util下的Scanner类导入
public class Vare1 {
//编写一个main方法
public static void main(String[] args) {
//步骤1:导入/引入 Scanner类所在的包
//步骤2:创建Scanner类的对象,new创建一个对象,
Scanner input = new Scanner(System.in);
//步骤3:调用里面的功能
System.out.println("请输入姓名:");
String name = input.next();//这个比较特殊一些直接用next()
System.out.println("请输入年龄:");
int age = input.nextInt();//其他的都是这个格式的,以此类推即可
System.out.println("请输入成绩:");
double score = input.nextDouble();
System.out.println( "name:"+name);
System.out.println( "age:"+age);
System.out.println( "score:"+score);
}
}
十、进制
-
进制介绍
对于整数,有四种表示方式:
-
二进制:0,1,满2进1.以0b或0B开头。
-
十进制:0-9,满10进1。
-
八进制:0-7,满8进1.以数字0开头表示。
-
十六进制:0-9及A(10)-F(15),满16进1.以0x或0X开头表示。此处的A-F不区分大小写
-
-
进制的图示
十进制 十六进制 八进制 二进制 0 0 0 0 1 1 1 1 2 2 2 10 3 3 3 11 4 4 4 100 5 5 5 101 6 6 6 110 7 7 7 111 8 8 10 1000 9 9 11 1001 10 A 12 1010 11 B 13 1011 12 C 14 1100 13 D 15 1101 14 E 16 1110 15 F 17 1111 16 10 20 10000 17 11 21 10001 -
进制的转换
(一)1.二进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
案例:0b1011=1* 2^(1-1)+1 *2^(2-1)+0 *2^(3-1)+1 *2^(4-1)=1+2+0+8=11
2.八进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
案例:0234=4 *8^0 + 3 *8^1 + 2 *8^2=4+24+128=156
3.十六进制转十进制
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
案例:0x23A=10 *16^0 + 3 *16^1 + 2 *16^2=10+48+512=570
(二)
1.十进制转二进制
规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:34=0B00100010(八个字节所以补两个0)
2.十进制转八进制
规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
案例:131=0203
3.十进制转十六进制
规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
案例:237=0xED
(三)
1.二进制转八进制规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
案例:0b11010101=0b11(3)010(2)101(5)=0325
2.二进制转十六进制
规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
案例:0b11010101=0b1101(D)0101(5)=D5
第四组
1.八进制转二进制规则:将八进制数每1位,转成对应的一个3位的二进制数即可。
案例:0237=02(010)3(011)7(111)=0b010011111
2.十六进制转二进制
规则:将十六进制数每1位,转成对应的一个4位的二进制数即可。
案例:0x23B=0x2(0010)3(0011)B(1011)=0b001000111011
-
原码、反码、补码(重点难点)
对于有符号的而言:
1.二进制的最高位是符号位:0表示正数,1表示负数(口诀:0->0,1->-)2.正数的原码,反码,补码都一样(三码合一)
3.负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
4.负数的补码=它的反码+1,负数的反码=负数的补码-1
5.0的反码,补码都是0
6.java没有无符号数,换言之,java中的数都是有符号的
7.在计算机运算的时候,都是以补码的方式来运算的.
8.当我们看运算结果的时候,要看他的原码
-
java中有7个位运算(&、|、^、~、>>、<<和>>>)
分别是按位与&、按位或|、按位异或^、按位取反~,它们的运算规则是:
按位与&:两位全为1,结果为1,否则为0
按位或|:两位有一个为1,结果为1,否则为0
按位异或^:两位一个为0,一个为1,结果为1,否则为0
按位取反~:0->1,1->0
算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
逻辑右移/无符号右移>>>:低位溢出,高位补04
特别说明:没有<<<符号