运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
运算符分类
(1)算术运算符
(2)赋值运算符
(3)关系运算符(比较运算符)
(4)逻辑运算符
(5)位运算符(需要二进制基础)
(6)三元运算符
算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。
(1)关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
(2)关系表达式,经常用在 if 结构的条件中或循环结构的条件中。
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。
(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。
&& 和 & 使用区别
(1)&&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高。
(2)& 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低。
(3)开发中, 我们使用的基本是使用短路与&&,效率高。
基本语法:
条件表达式 ? 表达式 1: 表达式 2;
运算规则:
(1)如果条件表达式为 true,运算后的结果是表达式 1;
(2)如果条件表达式为 false,运算后的结果是表达式 2;
标识符概念:
(1)Java对各种变量、方法和类等命名时使用的字符序列称为标识符。
(2)凡是自己可以起名字的地方都叫标识符,int num1=90;
标识符的命名规则(必须遵守)
(1)由26个英文字母大小写,0-9,【_】 或 【$】 组成。
(2)数字不可以开头。
(3)不可以使用关键字和保留字,但能包含关键字和保留字。
(4)Java中严格区分大小写,长度无限制。
(5)标识符不能包含空格。
标识符命名规范
(1)包名:多单词组成时所有字母都小写,比如 com.hsp.crm
(2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰],比如: TankShotGame
(3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小驼峰,简称驼峰法],比如: tankShotGame
(4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ,比如 :定义一个所得税率,TAX_RATE。
定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
对于整数,有四种表示方式:
(1)二进制:【0,1】满 2 进 1,以 0b 或 0B 开头。
(2)十进制:【0-9】满 10 进 1。
(3)八进制:【0-7】满 8 进 1,以数字 0 开头表示。
(4)十六进制:【0-9 及 A(10)-F(15)】满 16 进 1,以0x或0X开头表示。(此处的 A-F 不区分大小写)
规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
案例:请将 0b11010101 转成八进制
0b110(6)010(2)101(5) = 0625
规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
案例:请将 0b11010101 转成十六进制
0b1101(13)0101(5) = 0XD5
规则:规则:将八进制数每1位,转成对应的一个3位的二进制数即可
案例:请将 0237 转成二进制
02(010)3(011)7(111)= 0B10011111
规则:将十六进制数每1位,转成对应的4位的一个二进制数即可。
案例:请将 0x23B 转成二进制
0x2(0010)3(0011)B(1011) = 0B1000111011
对于有符号的而言:
(1)二进制的最高位是符号位:0表示正数,1表示负数。
(2)正数的原码,反码,补码都一样(三码合一)。
(3)负数的反码 = 它的原码符号位不变,其它位取反(0->1,1->0)。
(4)负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1。
(5)0 的反码,补码都是 0。
(6)java 没有无符号数,换言之,java中的数都是有符号的。
(7)在计算机运算的时候,都是以补码的方式来运算的。
(8)当我们看运算结果的时候,要看他的原码。
Java中有7个位运算(& 、| 、^ 、~、 >>、<<和>>>)
分别是 按位与& 、按位或| 、按位异或^ ,按位取反~ ,它们的运算规则是:
(1)按位与& :两位全为1,结果为1,否则为0
(2)按位或| :两位有一个为1,结果为1,否则为0
(3)按位异或^ :两位一个为0,一个为1,结果为1,否则为0
(4)按位取反~:0->1,1->0
public class Demo {
public static void main(String[] args) {
/**
* (1)先得到2的补码
* => 2的原码 00000000 00000000 00000000 00000010
* => 2的补码 000000O0 00000000 00000000 00000010
* (2)再得到3的补码
* => 3的原码 00000000 00000000 00000000 00000011
* => 3的补码 00000000 00000000 00000000 00000011
* (3)按位&
* 2的补码 000000O0 00000000 00000000 00000010
* 3的补码 00000000 00000000 00000000 00000011
* 运算后的补码 000000O0 00000000 00000000 00000010
* 运算后的原码也是 000000O0 00000000 00000000 00000010
* 结果就是 2
*/
System.out.println(2&3);//2
}
}
public class Demo {
public static void main(String[] args) {
/**
* (1)先得到-2的补码
* => -2的原码 10000000 00000000 00000000 00000010
* => -2的反码 11111111 11111111 11111111 11111101
* => -2的补码 11111111 11111111 11111111 11111110
* (2)按位取反~
* 运算后的补码 00000000 00000000 00000000 00000001
* 运算后的原码 000000O0 00000000 00000000 00000001
* 结果就是 1
*/
System.out.println(~-2);//1
}
}
还有3个位运算符
(1)算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位(本质:除以2)
(2)算术左移<<:符号位不变,低位补0(本质:乘以2)
(3)>>>:逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0
(4)特别说明:没有<<<符号