JAVA 运算符与运算规则

算术运算

算数运算包括: 加+,减-,乘*,除/,求余%,自增++,自减–

从字面上其实很好理解前五个,所以不多赘述直接看代码。

        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无穷大(浮点数/0System.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版权协议,转载请附上原文出处链接和本声明。