2.Java运算符

一、运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等

java中的运算符如下:

  • 算数运算符
  • 赋值运算符
  • 关系运算符(比较运算符)
  • 逻辑运算符
  • 位运算符
  • 三元运算符

1.算数运算符

运算符运算范例结果
+正号+33
-负号b=11; -b-11
+1+23
-3-12
*2*36
/12/43
%取模(取余)10/31
++n自增(前):先运算后取值a=2;b=++aa=3;b=3
n++自增(后):先取值后运算a=2;b=a++a=3;b=2
–n自减(前):先运算后取值a=2;b=–aa=1;b=1
n–自增(后):先取值后运算a=2;b=a–a=1;b=2
+字符串相加“he”+“llo”“hello”
自增:++
作为独立的语句使用:
	前++和后++都完全等价于 i = i + 1;
作为表达式使用:
	前++: ++i先自增后赋值
	后++: i++先赋值后自增
--、+、-、* 是一个道理,完全可以类推

练习题1(问结果是多少?为什么?)

int i = 1;
i = i++;//使用临时变量: temp = i; i = i+1; i = temp;
System.out.println(i);//1

练习题2(问结果是多少?为什么?)

int i = 1;
i = ++i//使用临时变量: i = i+1; temp = i; i = temp;
System.out.println(i);//2

2.关系运算符

运算符运算范例结果
==相等2 == 3false
!=不等2 != 3true
>大于2 > 3false
<小于2 < 3true
>=大于等于2 >= 3false
<=小于等于2 <= 3true
instanceof检查是否是类的对象“he” instanceof Stringtrue

注意事项:

关系运算符的结果都是boolean型,也就是要么是true,要么是false

关系运算符组成的表达式,我们称为关系表达式

比较运算符"==“不能误写成”="

3.逻辑运算符

名称语法特点
短路与 &&条件1 && 条件2两个条件都为true,结果为true,否则为false
逻辑与 &条件1 & 条件2两个条件都为true,结果为true,否则为false

&& 和 & 使用区别:

  1. && 短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
  2. & 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
  3. 开发中,我们使用的基本是短路与 &&,效率高
名称语法特点
短路或 ||条件1 || 条件2只要有一个条件为true,结果为true,否则为false
逻辑或 |条件1 | 条件2只要有一个条件为true,结果为true,否则为false

|| 和 | 使用区别:

  1. || 短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
  2. | 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
  3. 开发中,我们基本使用 ||
名称语法特点
! 非(取反)! 条件如果条件本身成立,结果为false,否则为true
^ 逻辑异或条件1 ^ 条件2当两个条件不同时,则结果为true,否则为false

练习题1:

//问 x=?,y=?
int x = 5;
int y = 5;
if (x++ == 6 & ++y == 6) x = 11;
System.out.println("x=" + x + ",y=" + y);
//问 x=?,y=?
int x = 5;
int y = 5;
if (x++ == 6 && ++y == 6) x = 11;
System.out.println("x=" + x + ",y=" + y);
//问 x=?,y=?
int x = 5;
int y = 5;
if (x++ == 5 | ++y == 5) x = 11;
System.out.println("x=" + x + ",y=" + y);
//问 x=?,y=?
int x = 5;
int y = 5;
if (x++ == 5 || ++y == 5) x = 11;
System.out.println("x=" + x + ",y=" + y);

练习题2:

//问 z=?
boolean x = true;
boolean y = false;
short z = 46;
if ((z++ == 46) && (y = true)) z++;
if ((x = false) || (++z == 49)) z++;
System.out.println("z= " + z);

答案:

x=6,y=6
x=6,y=5
x=11,y=6
x=11,y=5
z=50

4.赋值运算符

介绍:赋值运算符就是将某个运算后的值,赋给指定的变量

  • 赋值运算符分类:

    ​ 基本赋值运算符:=

    ​ 复合赋值运算符:+= , -= , *= , /= , %=等

  • 赋值运算符特点

1.运算顺序从右往左 int num = a + b;

2.赋值运算符的左边 只能是变量,右边可以是变量、表达式、常量式

3.复合赋值运算符等价于下面的效果
	比如:a += 3; 等价于 a = a+3; 其它类推

4.复合赋值运算符会进行类型转换
	byte b = 2;
	b+=3; //相当于b = (byte)(b+3)
	b++; //相当于b = (byte)(b+1)

5.三元运算符

基本语法:

条件表达式 ? 表达式1 : 表达式2;

运算规则:

1.如果条件表达式为true,运算后的结果是表达式1

2.如果条件表达式为false,运算后的结果是表达式2

演示:

int a = 10;
int b = 99;
int result = a > b ? a++ : b--;
System.out.println(a); //10
System.out.println(b); //98
System.out.println(result); //99

6.运算符优先级

如下表,运算符优先级的高低,从上到下依次排列

. () {} ; ,
++ – ~ !(data type)
*** / %**
*** -**
<< >> >>> 位移
< > <= >= instanceof
== !=
&
^
|
&&
||
? :
*= = /= %=
+= -= <<= >>=
>>>= &= ^= |=

7.键盘输入语句

介绍:在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取,需要一个扫描器(对象),就是Scanner

步骤:

  1. 导入该类的所在包,java.util.*

  2. 创建该类对象(声名变量)

  3. 调用里面的功能

import java.util.Scanner;

public class Demo12 {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入姓名:");
        String name = myScanner.next();
        System.out.println("请输入年龄:");
        int age = myScanner.nextInt();
        System.out.println("名字是" + name + ",年龄是" + age);
    }
}

8.进制介绍

对于整数,有四种表示方式:

1.二进制:0,1,满2进1,以0b或0B开头

2.十进制:0-9,满10进1

3.八进制:0-7,满8进1,以数字0开头表示

4.十六进制:0-9及A(10)-F(15),满16进1,以0x或0X开头表示,此处A-F不区分大小写

9.原码、反码、补码

  1. 二进制的最高位是符号位:0表示正数,1表示负数

  2. 正数的原码、反码、补码都一样(三码合一)

  3. 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)

  4. 负数的补码=它的反码 +1,负数的反码=负数的补码 -1

  5. 0的反码,补码都是0

  6. java没有无符号数,换言之,java中的数都是有符号的

  7. 在计算机运算的时候,都是以补码的方式来运算的(因为这样可以解决正数和负数的运算问题)

  8. 当我们看运算结果的时候,要看它的原码

10.位运算符

java中有7个位运算符(&、|、^、~、>>、<<、>>>)

分别是 按位与&、按位或|、按位异或^、按位取反~,它们的运算规则是:

  1. 按位& : 两位全为1,结果为1,否则为0
  2. 按位或| : 两位有一个为1,结果为1,否则为0
  3. 按位异或^ : 两位一个为0,一个为1,结果为1,否则为0
  4. 按位取反~ : 0->1,1->0

还有3个位运算符 >>、<<、和 >>>,运算规则:

  1. 算数右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
  2. 算数左移 <<:符号位不变,低位补0
  3. >>> 逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值