Java运算符

1. 算术运算符

  • +

  • -

  • *

  • /

  • % 取余或取模

  • 整数被0除会产生一个异常,而浮点数被0整除将会得到无穷大或NaN结果

看一个取模的例子,Java中两个整数的除法的结果为整数,除不尽时采取的措施时是舍弃小数位,如 10/3 = 3, -5/2=-2, 取余的结果要根据除法的结果得出,a % b = a - (a / b) * b

int a = 17 % 3;
int b = 17 % -3;
int c = -17 % 3;
int d = -17 % -3;
System.out.println(a + " " + b + " " + c + " " + d);    // 2 2 -2 -2

2. 数学函数与常量

  • Math.sqrt()
  • Math.pow()
// Math.sqrt(double x)
double x = 4;
double y = Math.sqrt(x);
System.out.println(y);

//Math.pow(double x, double a)  x ^ a
double z = Math.pow(2, 5);
System.out.println(z);

取整

  • Math.floor()
  • Math.ceil()
System.out.println(Math.ceil(3.2));		// 4.0
System.out.println(Math.floor(3.2));	// 3.0

三角运算

  • Math.sin()
  • Math.cos()
  • Math.tan()
System.out.println(Math.sin(Math.PI/6));
System.out.println(Math.cos(Math.PI/2));
System.out.println(Math.tan(Math.PI/2));
/*
0.49999999999999994
6.123233995736766E-17
1.633123935319537E16
*/

常量值:

  • Math.PI
  • Math.E
System.out.println(Math.PI);
System.out.println(Math.E);
/*
3.141592653589793
2.718281828459045
*/

指数与对数运算

  • Math.exp()
  • Math.log()
  • Math.log10()
System.out.println(Math.exp(Math.log(5)));	
System.out.println(Math.log(Math.E * Math.E));
System.out.println(Math.log10(1000));
/*
4.999999999999999
2.0
3.0
*/

3. 自动类型转换

数值类型之间的自动类型转换:

  1. byte ----> short -----> int -----> long,char------> int 低精度自动转向高精度,不会造成信息的丢失,
  2. int------> float, long----->float, 都有可能造成精度的损失
  3. int------->double. 不会造成精度的丢失
  4. long------> double有可能造成精度的损失

4. 强制类型转换

  • cast,强制类型转换

比如将一个double强转成int

double d = 9.75;
int n = (int) d;	// n的值为9

如果相对浮点数进行四舍五入运算,可以用Math.round(), 返回的是一个long

double d = 9.50;
int n = (int) Math.round(d);	// n的值为10
  • 将一个数值从一种类型强制转换成目标类型时,其本身的值又超过了目标类型的范围,那么就可能截断成完全不同的值,比如(byte) 300的实际值最终为44;int类型的300的二进制位32位,前23位都是0,后9位分别是1 0010 1100,强转成byte后,只保留后8位,此时二进制位 0010 1100,即44
  • 不要在boolean类型与任何数值类型之间强制类型转换

5. 赋值运算符

  1. = 赋值运算符

  2. +=, -=, *=, /=,%=复合赋值运算符

  3. 注意在复合赋值运算符中发生的强制类型转换,如

    int a = 3;
    a += 3.5;	//这里并不会报错,而是发生了隐式的强制类型转换,等价于 a = (int) (a + 3.5)
    

6. 自增自减运算符

  1. 前缀形式:++n--n

  2. 后缀形式:n++n--

  3. 前缀形式和后缀形式的异同:均会使得变量值加1或者减1;但用在表达式中时,前缀形式会先完成变量值加1然后再进行其它操作,而后缀形式会使用原来变量的值。

    int a = 3;
    int b = 3;
    int c = a++;	// c = 3, a = 4
    int d = ++b;	// d = 4, b = 4
    

7. 关系和boolean运算符

  1. ==!=
  2. < <= > >=
  3. !逻辑非、&&逻辑与、||逻辑或:逻辑与如果第一个表达式为false,那么后一个条件便不会计算;同理,如果逻辑或第一个表达式为true,那么也无须计算第二个条件
  4. ?:三元运算符A? B : C, 如果A表达式的结果为true,则返回B表达式的值,否则返回C表达式的值

8. 位运算符

处理整形类型时,可以直接对组成整数的各个位完成操作。位运算符包括:

  • & (and) 与
  • | (or) 或
  • ^ (xor) 异或
  • ~ (not) 非
  • >> 右移运算符,符号位填充高位
  • << 左移运算符,0填充低位
  • >>>类似于右移运算符,但该运算符用0填充高位,而非符号位填充高位

9.括号与运算符优先级

  • 括号的优先级最高
  • 同一个优先级别的运算符按照从左至右的顺序进行计算(右结合运算符除外,如+=是从右至左运算)
  • 不使用括号时,优先级顺序如下表:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值