Java 入门之5:Java 运算符、及自动类型转换和强制类型转换 的总结

目录

运算符:

Java中的算术运算符:

++ 和 -- 的注意事项总结(以及举例):

Java中的赋值运算符:​

Java中的扩展赋值运算符:

扩展赋值运算符注意事项:

Java中的关系运算符:

Java中的instanceof关系运算符:

Java中的逻辑运算符:

逻辑运算符注意事项:

Java中的三元运算符(又称三目运算符,条件运算符):

 三元运算符注意事项:

Java中的位运算符(了解,实际开发中极少使用位运算符来开发程序。):

 位运算符注意事项:

Java中的扩展赋值位运算符(了解,实际开发中极少使用扩展赋值位运算符来开发程序。):

扩展赋值位运算符注意事项:

Java中的其他符号:

运算符的优先级:

 运算符优先级注意事项:

自动类型转换和强制类型转换:

 基本类型中的自动类型转换:

引用类型中的自动类型转换:

基本类型中的强制类型转换:

引用类型中的强制类型转换:


运算符:

运算符用于执行程序代码运算,是针对一个以上操作数来进行运算的符号。


Java中的算术运算符:

++ 和 -- 的注意事项总结(以及举例):

  1. ++ 单独使用的时候,无论 ++ 是放在变量前面还是变量后面,都是变量里存的数值加1操作。
  2. -- 单独使用的时候,无论 ++ 是放在变量前面还是变量后面,都是变量里存的数值减1操作。
  3. 如果 ++ , --  参与到运算中去的话,对运算结果会产生影响。它们的规则是看 ++ 、-- 是在后还是在前:
    1. 如果 ++ 在后,先运算,”后“!加1,如果 ++ 在前,先加1,后运算。
    2. 如果 -- 在后,先运算,”后“ 减1,如果 -- 在前,先减1,后运算。
  4. 比如 byte i = 5; i++ , ++i;等同于 i = (byte) (i + 1);-- 也是一样的,如果不是int类型的数字(一般都是指byte,short,char这三个类型),它底层会先自动转换为int类型,运算完成后再强转为目标类型!如果数据溢出了怎么办?(关于自动类型转换和强制类型转换请看文末最后一个标题的详细细节!)
  5. 如果是把自增后的值赋值给一个新的变量,这时候就跟它 ++,-- 前后顺序有关系的!因为设计到赋值运算!比如: int a = 9; int b = a++;(注意:这时候的a并没有自增,是先进行赋值运算,后面没有使用了就没有加1了!所以这里的b也是9),如果是 int d = 11;int c = ++a;那么这个时候的c就等于12!,如果是 ++ 在后这个操作,最后一个的++是不会执行的!因为没有再使用! 比如 int s = 2; 如果是 int q = s(2)++(3) + s(3=5) + s(3 = 8)++;(这里的q的结果是 8,最后那个++没有执行了,直接赋值运算就结束了!后面没有再使用了),如果是 int q = s(2)++(3) + s(3=5) + ++s(4 = 9);具体细节请看我的举例!
  6. 一般 ++ -- 在后 都习惯使用在for,while,do{}while 循环结构中较多!或者只是纯粹的打印 ++ --后的值,且 ++ -- 在前在后都无所谓!这个才叫所谓的单独使用!

++ 参与到运算中

1:如图所示:

2:还有个更复杂的(说明:打<>的里面数字是不容易被看出来的操作,难就是难到了这个点上面)!(打<>后是后加1的操作!)如图所示:

-- 参与到运算中

如图所示:(说明:打<>的里面数字是不容易被看出来的操作,难就是难到了这个点上面)!(打<>后是后加1的操作!)

++,和 -- 都参与到运算中(变态的面试题就有这种题,我就遇到过类似于我写的这种,打{}圈起来就是坑,还有负数,就不能当个人?……)(打<>后是后加1的操作!)


Java中的赋值运算符:

 注:实际上 赋值操作就是 字面常量与变量的运算操作!


Java中的扩展赋值运算符:

扩展赋值运算符注意事项:

说明: eao = extend assignment operator(扩展赋值运算符) 

  1. 数据类型 变量 eao 数值or字符or变量or算术表达式;的结果等同于 数值类型 变量  = 算术表达式。比如: int a = 123; a += 3 +  5;等同于 int a = 123 + 3 + 5;
  2. 扩展赋值运算符的优点:它可以实现隐式强转,即整数类型,小数类型,字符类型在 参与运算的时候 当接收结果的数据类型是比默认的数据类型的数据范围还小的数据类型的时候的就会实现自动隐式强转。 比如 int a = 3;byte b = 7;b += a; 等同于 b = (byte) (b + a); 如图所示:
  3. 扩展运算符实现的自动强转只对基本类型,即整数类型,浮点数类型,字符类型在 参与运算的时候 当接收结果的数据类型是比默认的数据类型的数据范围还小的数据类型的时候有效(但是不包括boolean类型,boolean类型不能参与运算),不对引用类型有效!包括了基本类型的包装类型!

  4. 根据上图,一句话概括就是如果接收的数据类型数据范围是比默认的数据类型小的,但是它是它本身的基本数据类型的包装类型那么扩展运算符就不会具有隐式强转的功能了。编译都不会通过!扩展运算符的隐式强转只对基本类型才有效!(关于自动类型转换和强制类型转换请看文末最后一个标题的详细细节!)

  基本数据类型从小到大(按取值范围)顺序:

如果对char类型还想了解更多可以看我的另外一篇博文,里面详细的记载了一些关于char的细节!Java 入门之6:Java中的char类型是怎么存储的以及常见的编码字符集_flagyili的博客-CSDN博客


Java中的关系运算符:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值