【前置知识】
Java 语言支持如下运算符(operator):

  • 算术运算符: +,-,*,/,%,++,–
  • 赋值运算符 =
  • 关系运算符: >,<,>=,<=,==,!= instanceof
  • 逻辑运算符: &&,||,!
  • 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
  • 条件运算符 ?:
  • 扩展赋值运算符:+=,-=,*=,/=

1.二元运算

(1)整型运算

如果两个操作数有一个为Long, 则结果也为long;
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.

(2)浮点运算

如果两个操作数有一个为double, 则结果为double.
只有两个操作数都是float, 则结果才为float.


2.取模运算

(1)操作数可以是浮点数,但一般为整数。

(2)取模运算的操作结果的符号取决于第一个操作数:

java option处理 java中operation用法_java option处理

public static void main(String[] args) { 
	System.out.println(9 % 4); //1 
	System.out.println(-9 % -4); //-1 
	System.out.println(-10 % 4); //-2 
	System.out.println(9 % -4); //1 
}

3.一元运算

(1)自增(++)和自减(–);
(2)有前缀和后缀之分:
前缀:先自增/减,再代入表达式。
后缀:先代入表达式,再对变量自增/减。

(3)Java中的乘幂运算
并不是^,这是逻辑异或。
Math类提供了很多科学和工程计算需要的方法和常数。特殊的运算都需要运用到方法!

public static void main(String[] args) { 
	int a = 3^2; //java中不能这么处理, ^是异或符号。 
	double b = Math.pow(3, 2); 
}

【面试题】
计算2*8的最快速方法(运算效率最快)?

public static void main(String[] args) { 
	System.out.println(2 << 3); 
}

用移位运算 int a=2<<3;
a就是2乘以8 最后结果是16 这是最省内存 最有效率的方法。
知识:在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算).。详细的需要了解计算机的组成原理!


4.逻辑运算

【注意】逻辑与和逻辑或采用短路的方式。从左到右计算,如果确定值则不会再计算下去。
逻辑与只要有一个为false, 则直接返回false.
逻辑或只要有一个为true, 则直接返回true。

public static void main(String[] args){
	int a = 5;//定义一个变量; 
	boolean b = (a<4)&&(a++<10); 
	System.out.println("使用短路逻辑运算符的结果为"+b); 
	System.out.println("a的结果为"+a); 
}

5.位运算

(1)位运算符作用在所有的位上,并且按位运算。

(2)
右移一位相当于除2取商;
左移一位相当于乘2。
(见上面面试题)


6.字符串连接符

“+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接
(个人觉得,这条应该加到自动类型转换里去)


7.【总结】

实际在Java运算的时候是很综合的一件事情,
要综合考虑很多东西。
例如,翻转任意三位数。

class Solution {
public:
    /**
     * @param number: A 3-digit number.
     * @return: Reversed number.
     */
    int reverseInteger(int number) {
        // write your code here
        return number/100+number/10%10*10+number%10*100;
    }
};

【小结】
(0)两个int型相除,结果仍然是int型。(你得知道这点才能考虑后面的)
(1)如何得到一个数的各个位数?
(利用好取余%运算和除法运算/)
(2)数的表示:
位数*对应的加权(不同数制加权不同)之和。