当前位置:   article > 正文

JavaSE - 数据类型与运算符(2)_public static void main(string[] args) {byte b1 =

public static void main(string[] args) {byte b1 = 1, b2 = 2, b3, b6, b8;

二、运算符

1.自增自减(++  --)

a++ 、a-- :先用再自增 / 自减

++a 、--a :先自增 / 自减再用

  1. int a = 1;
  2. int b = 2;
  3. int c;
  4. int d;
  5. int e;
  6. int f;
  7. c = a++;
  8. d = a--;
  9. e = ++b;
  10. f = --b;
  11. 结果:c = 1, d = 2, e = 3, f = 2

2.三目运算符

布尔表达式)?表达式1:表达式2;

  1. (x > 5) ? x = 1 : x = 2;
  2. 如果 (x>5) 为真,则x = 1,否则x = 2.

3.逻辑运算符(|、||、&、&&)

(1)表示逻辑或:|     ||

在 if 语句中使用 “ | ” 时,表示多个条件都需要判断,即便有表达式返回true,剩余条件仍需要判断。

短路非:使用 “ || ” ,只要有条件返回true,剩余条件不再判断,整体返回true。

(2)表示逻辑与:&     &&

短路与:使用 “ && ” ,只要有条件返回false,剩余条件不再判断,整体返回false

在java中,逻辑运算符就使用短路非 “ || ” 和短路与 “ && ” 

4.位运算符(&、|、^、~、>>、<<)

一般用于密码学

三、数据类型转换

当使用+、-、*、/、% 运算符时,有如下规则:

只要两个操作数中的一个是 double,那么另一个也是 double 类型,结果也是 double 类型;

只要两个操作数中的一个是 float,那么另一个也是 float 类型,结果也是 float 类型;

只要两个操作数中的一个是 long,那么另一个也是 long 类型,结果也是 long 类型;

否则(操作数为 byte、short、int、char),两个操作数都会转换为 int 型,结果也是 int 型。

但是 final 修饰的类型不会变。

  1. public class Work{
  2. public static void main(String[] args){
  3. byte b1 = 1, b2 = 2, b3, b6, b8;
  4. final byte b4 = 4, b5 = 6, b7 = 9;
  5. b3 = b1 + b2; //语句1
  6. b6 = b4 + b5; //语句2
  7. b8 = b1 + b4; //语句3
  8. b7 = b2 + b5; //语句4
  9. System.out.println(b3+b6);
  10. }
  11. }
  12. 结果:语句1,语句3,语句4 是错的,只有语句2 是对的,结果输出为0
  13. 分析:
  14. 语句1:数值常量都是int型,所以b1,b2提升为int型,结果也是int型,而b3是byte型,intbyte可能会丢失数据;
  15. 语句2:b4,b5有final修饰,所以仍然是byte型,结果也是byte型,b6就是byte型,不存在强转,不会丢失数据;
  16. 语句3:b1是int型,b4是byte型,运算时两个操作数都提升为int型,所以结果为int型,而b8是byte型,intbyte型可能会丢失数据;
  17. 语句4:b2是int型,b5是byte型,运算时两个操作数都提升为int型,所以结果为int型,而b7是byte型,intbyte型可能会丢失数据;
  18. 输出语句:因为整数型的默认值为0,所以b3+b6为0,输出结果为0

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/451849
推荐阅读
相关标签
  

闽ICP备14008679号