由于Java是强类型语言,所以需要进行有些运算的时候,需要用到类型转换

低 -----------------------------------------------------------------高

byte, short, char --> int --> long --> float --> double

运算中,不同类型的数据先转化为同一类型,然后进行运算。

强制类型转换

(类型)变量名 高------低

自由类型转换

(类型)低------高

注意点

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 拔高容量转换为低容量的时候,强制转换
  4. 转换的时候可能存在内存溢出,或精度问题

运算符

Java语言支持如下运算符:优先级()

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

//++ -- 自增,自减 一元运算
int a = 3;

int b = a++;  //执行完这行代码后,先给b赋值,再自增
    int c = ++a;  
    //a = a + 1;
    System.out.println(a);
    //a++ a = a + 1;
    //int c = ++a; //执行完这行代码前,先自增,再给c赋值

//幂运算 2^3 222 = 8
double pow = Math.pow(2,3);

//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;

System.out.println("a && b:"+(b&&a)); //逻辑与运算:两个变量都为真,结果才为true
    System.out.println("a || b:"+(a||b)); //逻辑或运算:两个变量有一个为真,则结果才为true
    System.out.println("!(a && b):"+!(a&&b)); //如果是真,则变为假,如果是假则变为真

/*
A = 0011 1100
B = 0000 1101
------------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010

2*8 = 16 2*2*2*2
 <<  *2
 >>  /2

 0000 0000    0
 0000 0001    1
 0000 0010    2
 0000 0011    3
 0000 0100    4
 0000 1000    8
 0001 0000    16

   */
    System.out.println(2<<3);

int a = 10;
int b = 20;

a+=b; //a = a+b
    a-=b; //a = a-b

    System.out.println(a);

    //字符串连接符 + ,String
    System.out.println(""+a+b);
    System.out.println(a+b+"");

// X ? y : z
//如果x==true 则结果为y,否则结果为z

int score = 80;
    String type = score < 60 ?"不及格":"及格";
    // if
    System.out.println(type);