javaSE 基础知识(二)操作符,运算符,

运算符

  • 算数运算符

1+2

操作数:就是使用运算符 参与运算的数据
表达式:使用运算符将若干个操作数连接起来的整体
一元运算符:如果一个运算符只需要一个操作数就称为一元运算符,单目运算符
二元运算符:如果一个运算符需要 一个操作数就称为二元运算符
+ 是一元运算符,正数(+1),也是二元运算符,(1+2)
- 是一元运算符,负数(-1),也是二元运算符,(1-2)
x 是二元运算符
/ 是二元运算符
% 是二元运算符(取余)
++ 自增1
是自减1

操作数和表达式的返回值:

操作数的返回值,就是操作数自身的值。
表达式的返回值:表达式计算之后得到的结果就是表达式的返回值

  • 赋值运算符

= 赋值运算符

  • 关系运算符(> >= <= < == !=)返回值为boolean(true,false)

  • 逻辑运算符(& 逻辑与 |逻辑或 ,逻辑异或)

  • 逻辑异或:相同为false ,不同为true
  • !逻辑非 逻辑取反,单目运算符
  • &&短路与;规则同逻辑与:双目运算符;
int age=10;
System.out.println(7>8 & age ++==10)//false 
System.out.pringtln(age)//11
System.out.println(7>8 &&age ++==10)//false
System.out.pringtln(age)//10
//差别:使用&运算的时候,不管前面操作数的结果是什么,所有的操作数都会参与运算,即使第一个操作数的结果是false 
//使用&& 操作数为false 所有操作数将不会进行运算
  • 位运算符"&""|""^"

//按位异或二元运算符规则:对应的位上相异为1,相同为0
System.out.println(5^3);//1
//一个数值,先后与同一个数异或两次,结果是这个数的本身
System.out.println(5^3^3)//5
//使用异或将两个变量的值互换
int value1=12;
int value2=32;
value1=value1^value2;
value2=value1^value2;
value1=value1^value2;
System.out.println(value1+"\t"+value2);//32  12
//实现简单加密
char c1='我';
char c2='喜';
char c3='欢';
char c4='你';
int loverKey=1314;
//会得到一个整数(char)得到就是整数对应的字符
char c11=(char)(c1^loveKey);
char c11=(char)(c2^loveKey);
char c13=(char)(c3^loveKey);
char c14=(char)(c4^loveKey);
System.out.println(c11+c12+c13+c14);//
//反编译
char c111=(char)(c11^loverKey);
char c222=(char)(c12^loverKey);
char c333=(char)(c13^loverkey);
char c444=(char)(c14^loverkey);
输出:我喜欢你
// >>带符号右移 >>n位;低位被移走n位,高位空出来的补符号位,正数补0,负数补1,
System.out.println(10>>1)//101--->5
//应用:x>>n 某些情况可以替代实现,x除以2的n次幂.【除运算比较低】>>性能比较高
//-1不满足
//x>>(n%32)
System.out.println(10>>33);//5
//<<左移 x<<n x的左边的高位被挤走低位补0
//应用,在某些情况下代替x乘以2的n次幂
System,out.println(100<<2);//400
System.out.println(1<<31)//-2的31次幂
//>>>无符号右移,规则:低位被挤走,高位补0
//应用。为得到一种正整数
第二种得到随机数的方法
value=(random.nextIn()>>>1)%(MAX-MIN)+MIN;
  • 条件运算符"?"

java 中唯一一个三目运算符,需要三个操作数
语法:
操作数1?操作数2:操作数3;
操作数1为true 返回操作数2
操作数1为false返回操作数3;

public class Test{
	public static void main  (String[] args){
	finnal int MAX=32;
	finnal int MIN=21;
	int ran1=(int)(Math.random()*(MAX-MIN)+MIN);
	Random random=new Random();
	int ran2=(random.neatInt()>>>1)%(MAX-MIN)+MIN;
	System.out.println("最大的数"+ran1>ran2?ran1:ran2);
	}
}
  • 运算符优先级

在这里插入图片描述

发布了23 篇原创文章 · 获赞 4 · 访问量 385

猜你喜欢

转载自blog.csdn.net/weixin_44804206/article/details/105070874
今日推荐