-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjavaOperate
More file actions
84 lines (75 loc) · 5.45 KB
/
Copy pathjavaOperate
File metadata and controls
84 lines (75 loc) · 5.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
//JAVA运算符
class OperateDemo {
public static void main(String[] agrs){
//算术运算符:+ - * / (加减乘除) %(取余,模运算)/* + 也能作为连接符号,任何数据和字符串相连接,+的作用都是相连接*/
int a=6370,b=98;
a=a/1000*1000;
System.out.println("a="+a); //结果为6000(因为6370/1000结果为6.37。但是int是没有小数的,所以只取整数6,6*1000=6000)
int x=5,y=2,z; //z代表商,r代表余(模)
System.out.println("r="+x%y); //取余(计算模或者余数: r = a - z*b.),r(余)=5-2(商)*2
System.out.println("r="+y%x); //r= 2-0(商)*5
x=-5;
System.out.println("r="+x%y); //涉及负数运算时,负号只参考被模数a。r=-5-(-2商)*2 , r=-1
System.out.println("a="+5+5); //a=55,运算过程为"a=5"+5, 然后再次连接"a=55",结果为:a=55
System.out.println("a="+(5+5)); //a=10,运算过程为,按优先级先算括号内的算"a="+10, 然后再次连接"a=10",结果为:a=10
a=3;
b=4;
System.out.println("a="+a+",b="+b); //结果为 a=3,b=4
//++(自增:自增在左先自加后赋值,在右先赋值再自加) --(自减:自减在左先自减后赋值,在右先赋值再自减)
a=25;
b=a++; //a先赋值给b,a再自加
System.out.println("a="+a+",b="+b); //运算过程为:系统先把a的值暂存到一个区域,然后a自加,得出a的值后,再把暂存的a的值赋给b。
a=35;
b=++a;
System.out.println("a="+a+",b="+b); //运算过程为:a自加,然后把自加后的a赋值给b
a=5;
a=a++;
System.out.println("a="+a); //a=5,系统先把a的值暂存到一个区域,然后a自加,自加完成后,暂存的a的值再覆盖掉自加后的a值
//赋值运算:= += -= *= /=
int d,e,f;
d=e=f=4;
System.out.println(d);
d+=2; //d=d+2
System.out.println("d="+d); //结果为6
short g=50;
g+=3; //结果和g=g+3一样,但可以编译,因为“+=”是一个赋值运算,是一个符号,系统会在右边的运算完成后做自动转换动作,运算过程:g=(short)(g+4)
System.out.println("g="+g);
//g=g+3; //无法编译,因为short只有两字节,而3是Int型四字节,系统没有做自动转换,丢失精度。如果要编译必须做强转:g=(short)(g+4)这样强转以后才能编译
//比较运算符:>(大于) <(小于) >=(大于或等于) <=(小或等于) !=(不等于) ==(等于)
//比较运算符,运算结果都是boolean型,不是"true"就是"false"
//注意不要把比较运算符"==",误写成"="
a = 10;
b = 20;
System.out.println("a == b : " + (a == b) ); //结果为false
System.out.println("a != b :" + (a != b) ); //结果为true
System.out.println("a > b : " + (a > b) ); //结果为false
System.out.println("a < b : " + (a < b) ); //结果为true
System.out.println("b >= a : " + (b >= a) ); //结果为true
System.out.println("b <= a : " + (b <= a) ); //结果为false
//逻辑运算符: &(逻辑与) |(逻辑或) !(逻辑非) ^(异或)
//短路逻辑运算符:&&(与,具有短路性,如果左边为flase,右边不执行) ||(或,具有短路性,如果左边为flase,右边不执行)
//作用:用于连接两个boolean类型的表达式
a=5;
b=6;
//&(与)运算:两边都为true,结果才为true。不管左边是否为true,右边都会运算。
System.out.println("a<b&a>b="+(a<b&a>b)); //结果为false,因为右边的运算为false
//|(或)运算:左右只要有一边为true,结果就为true。只有两边都为false时,结果才为false.
System.out.println("a<b|a>b="+(a<b|a>b)); //结果为true,因为左边的结果为true
//!(非)运算:用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false
System.out.println("!(a<b)="+!(a<b)); //结果为false,因为5<6得到的值是true
System.out.println("!!(a>b)="+!!(a>b)); //结果为false,因为两次否定,为肯定。首次计算为!false输出true,又一次非运算!true最后结果输出false。
//^(异或)运算:两边都为true或都为false,结果为false,两边只有一个true得true
System.out.println("a<b^a>b="+(a<b^a>b)); //结果为true,因为两边的结果不相同
/*面试题:&& ||
&&(短路与)运算:只要左边不为true,右边就停止运算,输出false
||(短路或)运算:当左边为true时,右边就停止运算,输出true */
//位运算符:位与'&',位或'|',位非'~',位异或'^',右移'>>',左移'<<',0填充的右移'>>>' ,主要用于二进制运算的符号
//&(位与)运算:把两边数转成2进制计算,不够32位,高位补零,上下都是1才得1
System.out.println("位与="+(6&3)); //运算过程:6的二进制110,3的二进制011,上下都是1才得1,所以得到010,结果输出为2
//|(位或)运算:上下有一边为1就行1
System.out.println("位或="+(6|3)); //运算过程:6的二进制110,3的二进制011,上下有一边是1就得1,所以得到111,结果为7
//^(位异或)运算:两个操作数的位中,相同则结果为0,不同则结果为1
System.out.println("位异或="+(15^3)); //过程:15的二进制为1111,三的二进制0011,上下值不相等得1,得到1100,结果为12
System.out.println("位异或两次相同的数="+(15^3^3)); //过程:15的二进制为1111,三的二进制0011,上下值不相等得1,得到1100,1100再异或3,得到1111,结果为15
}
}