运算符
算术运算符
- 基本四则运算符:+(加)、-(减)、*(乘)、/(除)、%(取余);
int/int的结果还是int,0不能作为除数;
%不仅可以对int求模取余,也可以对double求模取余。 - 增量赋值运算符:+=、-=、*=、/=、%=;
- 自增/自减运算符:++、–;
如果不取自增运算的表达式的返回值,则前置自增和后置自增没有区别;
如果取表达式的返回值,则前置返回的值是自增之后的值,后置自增是返回自增之前的值。
关系运算符
关系运算符主要有六个:==、!=、<、>、<=、>=;
关系运算符的返回值都是boolean类型。
逻辑运算符
逻辑运算符主要有三个:&&(与)、||(或)、!(非);
逻辑运算符的操作数和返回值都是boolean。
- 逻辑与&&
两个操作数都为true时,返回true,否则返回false; - 逻辑或||
两个操作数都为false时,返回false,否则返回true; - 逻辑非!
操作数为false时,返回true,操作数为true时,返回false。 - 短路求值
&&和||遵守短路求值的规则,&&第一个操作数为false则直接返回false,||第一个操作数为true则直接返回true。
- &和|
&和|的操作数为boolean的时候,也表示逻辑运算,但是不支持短路求值。
位运算符
位运算符主要有四个:&、|、~、^;
位操作表示安二进制位运算,计算机中都是使用二进制来表示数据的,按位运算就是在按照二进制位的每一位一次进行计算。
- 按位与&:全1为1,有0为0;
- 按位或|:全0为0,有1为1;
- 按位取反~:把1变为0,0变为1;
0x前缀的数字为十六进制数字,printf能够格式化输出内容,%x表示按照十六进制输出。 - 按位异或^:同0或同1则为0,相异则为1。
移位运算符
移位运算符有三个:<<、>>、>>>
- 左移<<:最左侧的一位不要了,最右侧补0;
- 右移>>:最右侧的一位不要了,在左侧补充符号位;
- 无符号右移>>>:最右侧的一位不要了,最左侧补0;
左移1位,相当于原数字2,左移N位,相当于原数字2的N次方;
右移1位,相当于原数字/2,右移N位,相当于元数字/2的N次方;
由于计算机计算移位效率高于基本四则运算,当某个代码正好除2的N次方的时候可以用移位运算代替;
移动负数位或移位位数过大都没有意义。
条件运算符
条件运算符只有一个:表达式1?表达式2:表达式3;
当表达式1的值为true时,整个表达式的值为表达式2的值,当表达式1的值为false是,整个表达式的值为表达式3的值。
注释
注释是为了让代码更加容易被读懂而附加的描述信息,不参与编译运行满是却非常重要。代码不仅仅是写出来给别人看的,更是为了让三个月后的自己看懂自己写的代码。
基本规则
单行注释://注释内容(使用最多)
多行注释:/*注释内容*/(不推荐)
文档注释:/**文档注释*/(常见于方法和类之上的描述方法和类的作用)
注释规范
内容准确:注释内容要和代码一直、匹配,并在代码修改时及时更新;
篇幅合理:注释既不应该太精简,也不应该长篇大论;
关键字
用于定义访问权限修饰符的关键字:private、protected、public
用于定义类、函数、变量修饰符的关键字:abstract、final、static、synchronized
用于定义类与类之间关系的关键字:extends、implements
用于定义建立实例及引用实例,判断实例的关键字:new、this、super、instanceof
用于异常处理的关键字:try、catch、finally、throw、throws
用于包的关键字:package、import
其他修饰符关键字:native、strictfp、transient、volatile、assert