文章目录
1.操作符5.算数操作符Random类:
6.自动递增和递减7.关系操作符8.短路9.直接常量10.按位操作符如果两个输入位都是1如果输入位的某一个是1,不全是1
11.位移操作符[无符号]右移操作符(>>>)
13.字符串操作符 + 和 +=15.提升17.操作符小节
1.操作符
+、-、*、/在最底层,java中的数据时通过使用操作符来操作的优先级:先乘除,后加减。括号优先级最高
5.算数操作符
取模(%):从整数除法中产生余数
整数除法(/):直接去掉结果的小数位
Random类:
new Rand() 把当前时间当作随机数种子,每次执行产生 不同 的值new Rand(seed) 传入随机数种子,每次执行产生 相同 的值
一元加减:x = a * (-b) 一元操作符只用于转变数据
6.自动递增和递减
++a(前缀递增):先执行运算,在生成结果a–(后缀递减):先生成值,再执行运算
7.关系操作符
<、>、<=、>=、!=
package Chapter3
.Example01
;
public class Example01 {
public static void main(String
[] args
) {
Integer n1
= new Integer(47);
Integer n2
= new Integer(47);
System
.out
.println("n1 == n2: " + (n1
== n2
));
System
.out
.println("n1 != n2: " + (n1
!= n2
) + "\n");
System
.out
.println("n1.equals(n2): " + (n1
.equals(n2
)) + "\n");
value v1
= new value();
value v2
= new value();
v1
.i
= v2
.i
= 100;
System
.out
.println("v1.equals(v2): " + (v1
.equals(v2
)));
}
static class value {
int i
;
}
}
"=="和“!=”比较的是[对象引用]
equals()比较的是实际内容,不适用于“基本类型”,基本类型使用”==“和”!=“
equals()默认比较引用,除非再自己的类中覆盖equals方法
8.短路
package Chapter3
.Example02
;
import static net
.mindview
.util
.Print
.*
;
public class ShortCircuit {
static boolean test1(int val
) {
print("test1(" + val
+ ")");
print("val < 1 结果: " + (val
< 1) + "\n");
return val
< 1;
}
static boolean test2(int val
) {
print("test2(" + val
+ ")");
print("val < 2 结果: " + (val
< 2) + "\n");
return val
< 2;
}
static boolean test3(int val
) {
print("test3(" + val
+ ")");
print("val < 3 结果: " + (val
< 3) + "\n");
return val
< 3;
}
public static void main(String
[] args
) {
boolean b
= test1(0) && test2(2) && test3(2);
print("表达式结果: " + b
);
}
}
当test1为true继续执行,当test2为false时整个表达式最终为false,所以就没必要在执行下去
9.直接常量
后缀字符表示类型L / l 表示 longF / f 表示 floatD / d 表示 double十六进制:前缀 0x(0X) + 0~9 (a~f / A~F)八进制:前缀 0 + 0~7如果超出范围,编译器会自动转为int,并告诉我们进行“窄化转型”指数计数法
10.按位操作符
如果两个输入位都是1
按位“与”运算(&)生成 1按位“或”运算(|)生成 0
如果输入位的某一个是1,不全是1
按位“异或”运算(^)生成 1按位“非”运算(~)生成 和 输入相反
按位操作符可与等号(=)联用,以便合并运算和赋值。&= 、|= 、^= 都是合法的
11.位移操作符
位移操作符只可用来处理整数类型
左移位操作符(<<):按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0) 例:11111111111 → 10000000000
[有符号]右移操作符(>>):按照操作符右侧指定的位数将操作符左边的操作数向右移(若符号为正,则在高位插入0;若符号为负,则高位插入1)
[无符号]右移操作符(>>>)
使用“零扩展”:无论正负,都在最高位插入0对 char、byte、short 位移操作。在位移之前会被转为int类型,结果也是int对 byte、short位移,会先被转换为int,再进行右移操作,然后被截断。赋值给原来的类型,再这种情况下可能得到-1的结果
13.字符串操作符 + 和 +=
int x = 0 print( “”+ x );//0这种一个空白的String后面跟随 + 和 一个基本类型变量,以此作为不调用更加麻烦的显示方法( Integer.toString(x) )而执行字符串的转化方式
15.提升
只要比int小的类型(char、byte、short),在运算前,会自动转化成int通常表达式中出现的最大的数据类型决定表达式最终的数据类型例:float * double → double int * long → long
17.操作符小节
在 char、byte、short 中,进行算术运算,都会获得一个int结果,必须将其显示地类型转换回原来的类型(窄转换可能会造成信息丢失)以将值赋给原来类型