带你走进Java运算符和常用类

运算符

运算符的分类:

  1. 算数运算符
  2. 赋值运算符
  3. 比较|关系运算符
  4. 逻辑运算符
  5. 条件运算符
  6. 位运算符

根据操作数的多少又可以分类为:

  1. 单目|一元运算符:操作数只有1个的 ++ –
  2. 双目|二元运算符:操作数有两个的 + - > < +=
  3. 三目|三元运算符:操作数有三个的 ? :

算数运算符

+:

  1. 正号,表示正负。
  2. 加减
  3. 字符串链接符

-:

  1. 负号,表示正负。
  2. 减号

% 模以|取模|求余数:

如果第一个操作数比第二个操作数小,结果就为第一个操作数。

++:a++ ——>a=a+1

–:a-- ——>a=a-1

操作自己|影响自己

不论-- ++放在操作数前后,都是自身-1或+1

操作别人|影响别人

++|–放在操作数前面,先自身-1|+1,再去参与运算

++|–放在操作数后面,先去参与运算,再自身-1|+1

赋值运算符

+=、-=、/=、*=

优点:

  1. 提高执行效率(反编译工具可以看出编译时会把a=a+b编译成a+=b)

  2. 自动进行强制类型转换

    short i = 1;
    i = i + 1;//这句不可以,整型不可以赋值给短整型
    j += 1;//这句没问题,因为+=自动进行强制类型转换
    i++;//这句也可以,当时当i增加的值很大时,i++也只能+1,需重复执行多次
    

比较|关系运算符

< > <= >= 只能比较基础数据类型:byte short char int long float double

== !=基本数据类型和引用数据类型都可以比较是否相等

最终的运算结果都为boolean类型的值

System.out.println("因为"=='因'+'为');//编译报错,因为String与int无法比较
System.out.println("因为"==""+'因'+'为');//结果为true
System.out.println("因为".equals(""+'因'+'为');//结果为true

逻辑运算符

操作值为boolean类型的表达式

& 两边操作符都为true时,结果才为true,一个为false,结果为false

| 两边操作符都为false时,结果才为false,一个为true,结果为true

! 取反

^ 异或,两边相同时,结果为false,两边不相同时,结果为true

短路与|或 推荐使用,提高执行效率

&& 当左边为false时,结果为false,不计算右边

boolean i = false && 5/0 == 0;//语句合法,因为右边被短路了

|| 当左边为true时,结果为true,不计算右边

条件运算符

条件表达式 ? 值1 :值2 ;==>表达式值为true时,结果为值1,反之,结果为值2.

练习题:

1.比较三个数的大小,取最大的值

int a = 1;
int b = 2;
int c = 3;
//第一种
int max=a>b ? a:b;
max = max>a ? max:b;
//第二种
a>b & a>c ? a :(b > c? b : c);//没有括号也行
double i = 10/3;//i=3.0
	int j = 10/3;//j=3
	System.out.println(i == j);//true,因为值相同
	System.out.println(i);
	System.out.println(j);
double i = 10/3.0;//i=3.3333333333
	int j = 10/3;//j=3
	System.out.println(i == j);//false,因为值不相同
	System.out.println(i);
	System.out.println(j);

位运算符

先把操作数转为2进制,再去运算,得到的结果再转为10进制

&

|

》 每移几位,相当于除以2的几次方==〉8》3=1

《 每移几位,相当于乘以2的几次方==〉2《 3=16

运算符优先级:

单目算数位关系,逻辑三目后赋值

Scanner类

Scanner:接收键盘输入

1.导包 告诉编译器Scanner类的位置

​ import 包名+类名;

​ 位置:类的上面导包

2.创建一个Scanner类的引用|变量

​ Scanner sc = new Scanner(System.in);

3.使用功能

  • sc.nextInt();
  • sc.nextByte();
  • sc.nextShort();
  • sc.nextLong();
  • sc.nextDouble();
  • sc.nextFloat();

sc.next()

接收用户输入的字符串类型的数据,从有效字符开始,遇到空格就无法接收,遇到enter结束功能

sc.nextLine()

接收String类型数据,以行为单位接收

4.关闭

sc.close();

Random类

nextInt()随机产生一个int范围内的整数

nextInt(整数n)产生一个[0,n)的随机整数

公式:

[0.max] ran.nextInt(max +1);

[min.max] ran.nextInt(max-min +1)+min ;

[min.max) ran.nextInt(max-min )+min ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值