运算符


public static void main(String[] args) {
long a = 12312312312313L;
int b= 123;
short c = 10;
byte d=8;

System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //Int
System.out.println(c+d); //Int //cast转换
//其中一个数为Long则一定为Long,否则就是Int,有double就是double

------------------------------------------------------------------
public static void main(String[] args) {
//关系运算符返回的结果: 正确,错误 布尔值
//if

int a = 10;
int b = 20;
int c =21;
System.out.println(c%a); //取余,也叫模运算
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(a>b);
------------------------------------------------------------------
public static void main(String[] args) {
// ++ -- 自增,自减 一元运算符
int a = 3 ;
int b = a++; // a=a+1执行完这行代码后,先给b赋值,再自增
int c= ++a; //执行完这行代码前,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2=8 很多运算,会使用工具类来操作
double pow = Math.pow(2, 3);
System.out.println(pow);
}
------------------------------------------------------------------
Ctrl+d:复制当前行到下一行
------------------------------------------------------------------
public static void main(String[] args) {
// 与 或 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a&&b:"+(a&&b)); //逻辑与运算:两个变量都为真,结果才为true
System.out.println("a||b:"+(a||b)); //逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println("!(a&&b):"+!(a&&b));//如果是真,则变为假

//短路运算:与运算中,前面判断为假,后面则不继续进行检查验算
int c =5 ;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
}
-----------------------------------------------------------------------
public static void main(String[] args) {
/*与二进制有关,平时不与二进制打交道
* A=0011 1100
* B=0000 1101
*
* A&B = 0000 1100
* A|B = 0011 1101
* A^B = 0011 0001 取反,位相同取0,不相同取1
* ~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);
----------------------------------------------------------------------
public static void main(String[] args) {
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); //在前面,就是进行拼接
System.out.println(a+b+""); //在后面,就是先运算
------------------------------------------------------------------------
public class Demo8 {
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格":"及格"; //可以精简代码
//if
System.out.println(type);
//
}
------------------------------------------------------------------------

Java 语言中运算符的优先级共分为 14 级,其中 1 级最高,14 级最低。在同一个表达式中运算符优先级高的先执行。表 1 列出了所有的运算符的优先级以及结合性。

--y || ++x && ++z;

这个表达式中包含了算术运算符和逻辑运算符。根据表 1 中列出的优先级,可以确定它的执行顺序如下:
① 先计算 y 的自减运算符,即 --y。
② 再计算 x 的自增运算符,即 ++x。
③ 接着计算 z 的自增运算符,即 ++z。
④ 由于逻辑与比逻辑或的优先级高,这里将 ② 和 ③ 的结果进行逻辑与运算,即 ++x && ++z。
⑤ 最后将 ④ 的结果与 ① 进行逻辑或运算,即 --y||++x&&++z。

如果没有上述对该表达式执行顺序的说明,第一眼看到它时将很难识别优先级。对于这类问题,可以通过添加小括号使表达的顺序更加清晰,而不用去查优先级表。如下所示为改进后的表达式。

(--y)||((++x)&&(++z));