JavaSE · 算术运算符 · 关系运算符 · 逻辑运算符 · 位运算符 · 条件运算符 · Java的注释 · Java的关键字

一、运算符

算术运算符

基本四则运算符:+  -  *  /  %

规则就是加减乘除,值得注意的是除法

int / int 结果还是 int,需要使用 double 来计算

int a = 1;
int b = 2;
System.out.println(a / b);

//还是 int 类型,结果为 0

0 不能作为除数

int a = 1;
int b = 0;
System.out.println(a / b);

//运行结果:
//Exception in thread "main" java.lang.ArithmeticException: / by zero

% 表示取余,不仅仅可以对 int 求模,也能对 double 来求模

System.out.println(11.5 % 2.0);

//运行结果:1.5

增量赋值运算符 +=  -=  *=  /=  %=
int a = 10;
a += 1;	//等价于 a = a + 1
System.out.println(a);

自增/自减运算符  ++  --
int a = 10;
int b = ++a;
System.out.println(b);
int c = a++;
System.out.println(c);

结论

  1. 如果不取自增运算的表达式的返回值,则前置自增和后置自增没有区别.
  2. 如果取表达式的返回值,则前置自增的返回值是自增之后的值后置自增的返回值是自增之前的值

关系运算符

关系运算符主要有六个:

==   !=   <   >   <=   >=
int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a < b);
System.out.println(a > b);
System.out.println(a <= b);
System.out.println(a >= b);

注意:关系运算符的表达式返回值都是 boolean 类型.


逻辑运算符

逻辑运算符主要有三个:

&&   ||   !
注意:逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是 boolean.

逻辑与 &&
规则:两个操作数都是 true,结果为 true,否则结果为 false.

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);

逻辑或 ||
规则:两个操作数都是 false,结果为 false,否则结果为 true.

int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);

逻辑非 !
规则:操作数为 true,结果为 false;操作数为 false,结果为 true(这个是单目运算符,只有一个操作数).

int a = 10;
int b = 20;
System.out.println(!(a < b));

短路求值
&& 和 || 遵守短路求值的规则.

System.out.println(10 > 20 && 10 / 0 == 0);	//打印 false
System.out.println(10 < 20 || 10 / 0 == 0);	//打印 true

我们都知道,计算 10 / 0 会导致程序抛出异常(除数为0),但上面的代码能正常运行,说明 10 / 0 这段代码并没有真正被运行到

so 结论:

  1. 对于 &&,如果左侧表达式值为 false,则表达式的整体的值一定是 false,无需计算右侧表达式.
  2. 对于 ||,如果左侧表达式值为 true,则表达式的整体的值一定是 true,无需计算右侧表达式.

& 和 |(不推荐使用)
& 和 | 如果操作数为 boolean 的时候,也表示逻辑运算。但是和 && 以及 || 相比,它们不支持短路求值.

System.out.println(10 > 20 & 10 / 0 == 0);	//程序抛出异常
System.out.println(10 < 20 | 10 / 0 == 0);	//程序抛出异常

位运算符

Java 中对数据的操作的最小单位不是字节,而是二进制位。

位运算符主要有四个:

&	|	~	^

位操作表示按二进制位运算.计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算.


按位与 &:如果两个二进制位都是 1,则结果为 1,否则结果为 0.

int a = 10;
int b = 20;
System.out.println(a & b);	//0

进行按位运算,需要先把 10 和 20 转成二进制,分别为 1010 和 10100.


按位或 |:如果两个二进制位都是 0,则结果为 0,否则结果为 1.

int a = 10;
int b = 20;
System.out.println(a | b);	//30

进行按位或运算,需要先把 10 和 20 转换成二进制,分别是 1010 和 10100.

注意:当 & 和 | 的操作数作为整数(int,short,long,byte)的时候,表示按位运算;当操作数为 boolean 的时候,表示逻辑运算。


按位取反 ~:如果该位为 0,则转为 1;如果该位为 1,则转为 0.

int a = 0xf;
System.out.printf("%x\n", ~a);

注意

  1. 0x 前缀的数字为十六进制数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进制位.
  2. 0xf 表示 10 进制的 15,也就是二进制的 1111.
  3. printf 能够打印数据,%x 表示按照十六进制输出.
  4. \n 表示换行符.

按位异或^:如果两个数字的二进制位相同,则结果为 0;相异则结果为 1.

public static void main(String[] args) {
        int a = 10; //01010
        int b = 20; //10100
        System.out.println(a ^ b);  //11110
}

移位运算(了解)

移位运算符有三个:

<<	>>	>>>

都是按照二进制位来运算.

左移 <<:最左侧位不要了,最右侧补0

public static void main(String[] args) {
       int a = 10;
       System.out.println(a << 1);	//相当于 10 * 2^1
}


右移 >>:最右侧位不要了,最左侧补符号位(正数补0,负数补1)

int a = 10;
System.out.println(a >> 1);	//相当于 10 / 2^1

无符号右移 >>>:最右侧位不要了,最左侧补0.

int a = 10;
System.out.println(a >>> 1);

注意

1. 左移 1 位,相当于原数字 *2. 左移 N 位,相当于原数字 *2 的 N 次方.
2. 右移 1 位,相当于原数字 /2. 右移 N 位,相当于原数字 /2 的 N 次方.
3. 由于计算机计算移位效率高于计算乘除,当某个代码正好乘除 2 的 N 次方的时候,可以使用移位运算代替.
4. 移动负数位或者移位位数过大都没有意义.

条件运算符

条件运算符只有一个:

表达式1 ? 表达式2 : 表达式3;

当 表达式1 的值为 true 时,整个表达式的值为 表达式2 的值;
当 表达式1 的值为 false 时,整个表达式的值为 表达式3 的值。

也是 Java 中唯一的一个三目运算符,是条件判断语句的简化写法.

//求两个整数的最大值,三目运算符写法:
int a = 10;
int b = 20;
int max = a > b ? a : b;

//求两个整数的最大值,if 语句写法:
int a = 10;
int b = 20;
if(a > b){
	max = a;
}else{
	max = b;
}

运算符的优先级

先看一段代码

System.out.println(1 + 2 * 3);

结果为 7,说明先计算乘法,再算加法。

另一个例子

System.out.println(10 < 20 && 20 < 30);

此时明显是先计算 10<20 和 20<30,再计算 &&.
否则 20&&20 这样的操作语法上有误.

小结:运算符之间是有优先级的,具体的规则我们没必要记忆. 直接在可能存在歧义的代码上加括号即可.


总结

  1. % 取余操作在 Java 中也能针对 double 来计算.
  2. 需要区分清楚 前置自增 和 后置自增 之间的区别.
  3. 由于 Java 是强类型语言,因此对于类型检查比较严格,因此像 && 之类的运算操作符必须是 boolean.
  4. 要区分清楚 & 和 | 什么时候是表示按位运算,什么时候表示逻辑运算.

二、注释

注释是为了让代码更容易被读懂而附加的描述信息. 不参与编译运行,但也非常重要.

代码写出来是给人看的,更是给三个月后的你看的.

基本规则

Java的注释主要分为以下三种

单行注释://注释内容
多行注释:/* 注释内容 */
文档注释:/** 文档注释 */	通常使用在方法和类之上,用于描述方法和类的作用

三、关键字

关键字是 Java 中的一些具有特定含义的单词.

用于定义访问权限修饰符的关键字
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

自定义的变量名不能和关键字冲突!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值