您的位置:首页 > 其它

第三章 操作符

2019-02-28 21:40 54 查看
版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/88045728

在最底层,java中的数据是通过使用操作符来操作的

一、优先级

       当一个表达式中存在多个操作符时,操作符的优先级决定了计算顺序,但是经常会忘了复杂的优先级规则,所以可以用括号来明确计算规则。
注意:在System.out.println()中包含“ + ”操作符,在这种上下文中“ + ”意味着“字符串连接”,如果有必要,它还会执行“字符串转换”,尤其是String类型的元素后面跟一个“ + ”,而这个“ + ”的后面又紧跟着非String类型的元素。

二、赋值

       分两种情况:

  1. 基本数据类型:这个没什么好说的,就是复制内容给另一个。
  2. 对象(String也是对象):我们真正操作的是对对象的引用,若是改变了初始的内容,那后面的引用的内容也将被改变,
    例如:
Class Tank {
  int level;
}
Tank t1 = new Tank();
Tank t2 = new Tank();
t1 = t2 ;

这就把t1和t2绑定为一个对象,t1里的level发生改变,t2也将发生改变。
但是

t1.level = t2.level;

就可以让两个对象保持彼此独立,而不是绑定到相同的对象,直接操纵对象里的域同意发生混乱。

三、自动递增和递减

分两种情况分析

  1. i++ 或 i- -(后缀式):先生成值,i再进行计算,相当于把 i 操作完再让它i = i + 1;
  2. ++i 或 - -i(前缀式):i先计算,再生成值,相当于先让 i 的值增加再对 i 进行操作

而在for循环遍历里就没有什么区别,最主要的区别就是当循环次数足够大时,++i的运行时间比i++少的多

四、类型转换操作符

原意:模型铸造,在适当的时候,java会将一种数据转换成另一种数据。

  1. 窄化转换:将容纳更多信息的数据类型转换成无法容纳那么多的数据类型,面临数据信息丢失的风险,所以编译器需要我们进行强制转换,例如 long 类型转换成 int 类型
  2. 扩展转换:不必进行显示的进行类型转换,因为新类型肯定能容纳原来类型的信息。例如:int 转换成 long 类型

些说的是基本数据类型,如果String 类型转换成 int 类型或者 char 类型,就需要别的来转换了。

最后提醒一下:两个足够大的 int 类型的值进行相乘,可能会溢出,如果你的结果出现2147483647或者出现-2147483647或者数值超过20亿的话建议改成 long 类型再重新计算

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: