Skip to content

运算符

798字约3分钟

java

2024-10-24

运算符

三目运算符

模式:

逻辑表达式 ? 表达式为true的返回值 : 表达式为false的返回值

作用:

1.三个操作数,简化了分支结构。(if......else......)

例:

//采用if else结构
//		if (rectangleWidth<=0||rectangleHeight<=0) {
//			System.out.println("输入错误!");
//			System.exit(0);
//		}else {
//			System.out.println("面积为:"
//		    +(rectangleHeight*rectangleWidth));
//		}
		//使用三元运算符
		System.out.println(rectangleWidth<=0||rectangleHeight<=0
				? "输入错误"
				: "面积为:"+rectangleHeight*rectangleWidth);

2.返回部分支持任意类型

注意:有变量接收返回值时,应注意返回值与变量的数据类型

3.可嵌套使用

int int1=5;
int int2=9;
int int3=int1 > 7 ? (int2 > 7 ? int2 : int1)
				  : (int2 > 7 ? int2 : int1);
System.out.println(int3);

赋值运算符

+=-=*=/=%=&=|=

增强赋值运算符不会有数据类型默认提升的问题。

位运算

~ ;//按位非
& ;//按位与
| ;//按位或
var<<n;//左移运算(相当于var*2^n)
var>>n;//右移运算(相当于var/2^n)
var>>>n;//无符号右移运算

其效率比*2^n效率高

其操作数的正负不影响结果。

运算符的优先级

位运算高于关系元素(除,&,|,^外)

1.操作数越少,优先级越高

2.括号优先级最高(. () {} , ++ -- ! (type))

3.单目运算符结合性大多为从右到左

结构化编程(三大结构)

1.只使用三大结构(顺序,选择,循环)

2.不准使用goto

java一行的含义:以“;”界定

总结

位运算应用:

再判断多选题时,如何判断一个选项是否被选中

每个选项占一位二进制数,计算和作为答案

将答案与要判断的选项的二进制数相与,结果为选项所对应的数则表示选中这个选项

例:

int A=1;//0000 0001
int B=2;//0000 0010
int C=4;//0000 0100
int D=8;//0000 1000
int E=16;//0001 0000
/*假设答案为:A,C,E。则可表示为:1+4+16=21	=>	0001 0101;
若要判断C是否被选则使用C和答案进行与运算
  0001 0101
& 0000 0100
= 0000 0100
4,代表选择了C
若要判断B是否被选则使用B和答案进行与运算
  0001 0101
& 0000 0010
= 0000 0000
0,代表未选择B
*/

问题

这里书写今日所遇到问题及解决方法 不要忽略小问题,小问题也要记下来。( 勿以善小而不为 )

//第一种
int a=25;
System.out.println(a--/a++);
//结果为1
//第二种
int b=25;
System.out.println(b++/b--);
//结果为0
//为什么?
/*
分析:
第一种:
先取值25再进行/运算,此时a为24由于右边a++先取值再计算故右边为24
结果为25/24=1;
第二种:
先取值25再进行/运算,此时a为26由于右边a--先取值再计算故右边为26
结果为25/26=0;
充分体现了前++的先取值再自增的特性
*/

举例:

double a=25;
System.out.println(a--/a++);
double b=25;
System.out.println(b++/b--);
double c=25;
System.out.println(c++/c++);
double d=25;
System.out.println(d--/d--);
/*结果为:
1.0416666666666667	25/24
0.9615384615384616	25/26
0.9615384615384616	25/26
1.0416666666666667	25/24
*/

吐槽

这里是吐槽部分,内容不限。