算术运算
算数运算包括: 加+,减-,乘*,除/,求余%,自增++,自减–
从字面上其实很好理解前五个,所以不多赘述直接看代码。
int a = 3000;
int b = 4000;
int c = 57;
System.out.println(a+b);
System.out.println(a+b-c);
int x=a+b-c;
//获取一个四位数的每一位
System.out.println(x/1000);//获取千位数
System.out.println(x/100%10);//获取百位数字
System.out.println(x/10%10);//获取十位位数
System.out.println(x%10);//获取个位数字
自加和自减的情况差不多,紧紧以自加举例子:
++a:表示先对a进行+1操作,在对得到的值操作
a++:表示先对a值操作在对a进行+1操作
减法同理
System.out.println(++a);//获取个位数字
System.out.println(a++);//获取个位数字
注意:此处面试可能会考:
我这里仅仅写两道简单的题,大家可以看看。
int a = 7;
int b = 8;
int c = 5;
int e = a++ + --b + c++;
int f = --b + e-- - ++c;
int g = f++ + ++a + e--;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(e);
System.out.println(f);
System.out.println(g);
解题方式:
int a = 7;
int b = 8;
int c = 5;
int e = a++ + --b + c++;
e = 7 + 7 +5 =19
a = 8
b = 7
c = 6
int f = --b + e-- - ++c;
f = 6 + 19 - 7 = 18
a=8
b=6
c=7
e=18
int g = f++ + ++a + e--;
g = 18 + 9 + 18=45
a=9
b=6
c=7
e=17
f=19
int j=1;
j=j++;
int k=j++;
System.out.println(j);
System.out.println(k);
有一个大佬对这个解释很明确:戳这里
基本运算规则
在了解基本运算过后,我们需要知道以下事情:
1.计算结果与最大类型一致
int a=2;
double b=3.2;
System.out.print(b/a);
2.byte,short,char三个类型参与运算自动转换为int型
byte a = 1;
byte b = 2;
byte c = (byte)(a + b);
int d = a+b;
System.out.println(c);
System.out.println(d);
3.整数运算溢出
byte a = 127;
byte b = 1;
byte c = (byte)(a + b);
int d = a+b;
System.out.println(c);
System.out.println(d);
4.浮点运算丢失精度(不精确)
System.out.println(1-0.8);
5.浮点数的特殊值(代码书写不规范)
Infinity无穷大(浮点数/0)
System.out.println(1.5/0);
NaN没有值
System.out.println(0/0.0);
比较运算符
其实这些都没有什么说的’==‘表示比较相等,’!='表示比较不等,一个相等了返回true,一个不等了返回true
和C/C++一样就不多写了。
逻辑运算符
&&:并且
||:或者
+:串连字符串
&:并且
|:或者
其实在我们没写最后两个之前都很好理解,但是最后两个不是和前两个一样吗,这里我们要知道一个东西叫做短路,
int a=10,b=20,c=10;
if(a==b&&a==c) {
System.out.println(a);
}
看这个程序,当我们中间用"&&“表示ab和ac必须同时满足,如果是”||"的话表示ab和ac满足一个就行。但是程序在走的时候是这样的。回到程序,如果a==b已经不成立了,那么就不会继续去判断a是否会等于c而是直接结束这个判断,但是如果我们用’&‘,则会对后边进行判断后,在判断是不是两个都是可以满足。这就是短路的含义。‘||’和’|'同理。
三元运算符
看代码,套格式
int a=10,b=20;
System.out.println(a>b?a:b);
很好理解,'?‘前边是判别式如果满足了就’:‘前边的作为返回结果,不满足就’:'后边作为返回结果。
赋值运算符
+=,-=,/=,*=
a+=2;//a=a+2;
a-=2;//a=a-2;
a*=2;//a=a*2;
a/=2;//a=a/2;
虽然前后类似,但是前者是直接在a所在的地址做处理,后者是将a取出做处理后,再放回内存(地址可能会改变)
版权声明:本文为m0_50210478原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。