第三章、 运算符

目录

第一章、 了解Java
第二章、 基本语法—变量
第三章、 运算符
第四章、 程序控制结构
第五章、 数组、排序、查找
第六章、 面向对象编程(基础)

第三章、 运算符

3.1 运算符介绍

  • 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
  1. 算术运算符
  2. 赋值运算符
  3. 关系运算符[比较运算符]
  4. 逻辑运算符
  5. 位运算符[需要二进制基础]
  6. 三元运算符

3.2 算术运算符

  • 介绍

算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。

  • 算术运算符一览
运算符运算范例结果
+正号+77
-负号b=11;-b-11
+9+918
-10-82
*7*856
/9/91
%取模(取余)11%92
++自增(前):先运算后取值a=2;b=++aa=3;b=3
++自增(后):先取值后运算a=2;b=a++a=3;b=2
自减(前):先运算后取值a=2;b=- -aa=1;b=1
自减(后):先取值后运算a=2;b=a- -a=1;b=2
+字符串相加"hello "+“World”“hello World”

当两个整数进行算术运算操作时,得到的结果仍然是整数类型。若有小数,得到的结果就为小数。

 -	/的使用

分为整数除法和浮点数除法,具体介绍如下代码解释:

package chapter3;

public class Test1 {
    public static void main(String argsp[]){
        int a = 5;
        int b = 2;
        //第一个知识点(整数除法):两个整数相除默认得到的也是整数,且不是四舍五入,是直接去除小数部分
        int c = a / b;
        double d= a / b;//本质是整数除法,先得到整数,然后再通过自动类型转换得到浮点数
        System.out.println(c);//2
        System.out.println(d);//2.0
        //第二个知识点(浮点数除法):至少要有一个操作数是浮点数,得到的数就不去除小数部分
        float f1=10.0f;
        int i1=3;
        System.out.println(f1/i1);//3.33333…………

    }
}

- 	%的使用

在Java中,%的本质可看做这样的一个公式:a % b = a - a / b *b,
即取模运算符 “%” 用于计算两个整数相除后的余数,符号位看被除数a即可。

package chapter3;

public class Test2 {
    public static void main(String args[]){
        //分为整数取模
        int c = 10 % 3;
        System.out.println(c);  // 输出结果为1
        //负数取模,其中一个是负数,若分子是正数,结果模也是正数
        int d= 10 % -3;
        System.out.println(d);  // 输出结果为1
        //负数取模,其中一个是负数,若分子是负数,结果模可能是负数或者0
        int e = -10 % 3;
        System.out.println(e);  // 输出结果为-1
        //负数取模,若分子和分母都是负数,结果模可能是负数或正数
        int f = -10 % -3;
        System.out.println(f);  // 输出结果为-1
        //最主要的是看公式a % b = a - a / b *b
    }
}

- 	++的使用

“++” 是一种递增运算符,用于对变量进行加 1 操作。
在 Java 中,有两种使用 “++” 的方式:

(1). 前缀递增运算符: ++variable
表示先将变量 variable 的值加 1,再执行后续操作。例如:

int i = 5;
int j = ++i; // i 先加 1 变为 6,然后赋值给 j,最终 j 的值为 6
System.out.println(j); // 输出 6

(2). 后缀递增运算符: variable++
表示先使用变量 variable 的原始值进行后续操作,然后再将变量 variable 的值加 1。例如:

int i = 5;
int j = i++; // 先将 i 的值赋给 j,即 j 的值为 5;然后再将 i 加 1,最终 i 的值为 6
System.out.println(j); // 输出 5

(3). 通过写代码理解

package chapter3;

public class Test3 {
    public static void main(String args[]){
        //++的使用,分为两种用法
        //第一个用法:++variable,先对variable进行加1操作,再进行其他操作
        int i1=1;
        int j1=++i1;//i1先加1变成2,然后再赋值给j1,j1=2
        System.out.println(j1);
        //第二种用法:variable++,先对使用variable原始的值进行操作,最后在进行加1
        int i2=1;
        int j2=i2++;//i2先执行赋值操作,最后在进行加1,即j2=1,i2=2
        System.out.println(j2);
    }
}

- 	作业:

(1). 假设还有59天,问:一共xx星期零xx天
(2). 定义一个变量保存华氏度,华氏度转摄氏度:5/9*(华氏度-100),求华氏度对应的摄氏度

package chapter3;

public class Test4 {
    public static void main(String args[]){
        //假设还有59天,问:一共xx星期零xx天
        int day=59;
        int weekday=day/7;
        int zero=day%7;
        System.out.println("一共是"+weekday+"星期零"+zero+"天");
        //定义一个变量保存华氏度,华氏度转摄氏度:5/9*(华氏度-100),求华氏度对应的摄氏度
        int h=246;
        float s;
        s=(float) 5.0/9*(h-100);
        System.out.println(s);
    }
}

3.3 关系运算符

  •  介绍
    
  1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false
  2. 关系表达式 经常用在if结构的条件中或循环结构的条件中
  •  关系运算符一览
    
运算符运算范例结果
==相等于8==7false
!=不等于8!=7true
<小于8<7false
>大于8>7true
<=小于等于8<=7false
>=大于等于8>=7true
instanceof检查是否是类的对象“hello” instanceof Stringtrue
  •  细节说明
    
  1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false.
  2. 关系运算符组成的表达式,我们称为关系表达式。a > b
  3. 比较运算符"==“不能误写成”="

3.4 逻辑运算符

 - 	介绍

用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。

 - 	逻辑运算符一览
  • 分为两组学习
  1. 短路与 &&,短路或||,取反 !
  2. 逻辑与 &,逻辑或 |, 逻辑异或^
aba&ba&&ba|ba||b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsefalsetruetruefalsetrue
falsetruefalsefalsetruetruetruetrue
falsefalsefalsefalsefalsefalsetruefalse
  • 说明逻辑运算规则:
  1. a&b : &叫逻辑与;规则:当a 和b同时为true ,则结果为true,否则为false(有假则假)
  2. a&&b : &&叫短路与;规则:当a和b同时为true ,则结果为true,否则为false(有假则假)
  3. a|b:|叫逻辑或;规则:当a和b,有一个为true ,则结果为true,否则为false(有真则真)
  4. a]|b:||叫短路或,规则:当a和b,有一个为true ,则结果为true,否则为false(有真则真)
  5. !a:叫取反,或者非运算。当a为true,则结果为false,当 a为false是,结果为true
  6. a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
  • &&和&基本规则名称
名称语法特点
短路与&&条件1&&条件2两个条件都为true,结果为true
逻辑与&条件1&条件2两个条件都为true,结果为true
  • &&和&使用区别
  1. &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
  2. &逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
  3. 开发中,我们使用的基本是短路与&&,效率高
  • ||和|的基本规则
名称语法特点
短路或||条件1||条件2两个条件有一个为true,结果为true
逻辑或|条件1|条件2两个条件有一个true,结果为true
  • ||和|的区别
  1. ||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高。
  2. |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低。
  3. 开发中,我们基本使用||

3.5 赋值运算符

  • 介绍

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

  • 赋值运算符的分类
  • 基本赋值运算符 =
  • 复合赋值运算符

比如:
+=、-=、*=、/=、%=等

3.6 三元运算符

  • 基本语法

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

  1. 如果条件表达式为true,运算后的结果是表达式1;
  2. 如果条件表达式为false,运算后的结果是表达式2;
int x = 10;
int y = 20;

int max = (x > y) ? x : y;
System.out.println("Max value is: " + max);

细节:表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)

int c=10>9?1.1:2.9;//错误
double d=10>9?89:90;//对,自动类型转换
  • 标识符的命名规则
  1. 由26个英文字母大小写,0-9,_或$组成
  2. 数字不可以开头
  3. 不可以使用关键字和保留字,但可以包含
  4. Java中严格区分大小写,长度无限制
  5. 标识符不可以包含空格
  • 关键字

定义:被Java语言赋予了特殊含义,用于专门用途的字符串
特点:关键字中所有字母都为小写
在这里插入图片描述

3.7 运算符优先级

Java中的运算符优先级如下(按从高到低的顺序):

  • 小括号:()
  • 一元运算符:++、–、+、-、!、~
  • 乘性运算符:*、/、%
  • 加性运算符:+、-
  • 移位运算符:<<、>>、>>>
  • 关系运算符:>、<、>=、<=、instanceof
  • 相等运算符:==、!=
  • 按位与运算符:&
  • 按位异或运算符:^
  • 按位或运算符:|
  • 逻辑与运算符:&&
  • 逻辑或运算符:||
  • 条件运算符:?:
  • 赋值运算符:=、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=、>>>=
  • 逗号运算符:

(1). 运算符优先级决定了表达式中运算符的执行顺序。在表达式中,拥有更高优先级的运算符会先被执行,如果出现相同优先级的运算符,则按照从左到右的顺序进行计算。

(2). 需要注意的是,在实际使用时,可以通过使用小括号来改变运算符的执行顺序,提高代码的可读性和准确性。

3.8 键盘输入法scanner

- 	介绍

在Java中,接收用户输入的数据,可以用键盘输入语句来获取即Scanner。

 - 	步骤:
  1. 导入该类的所在包,java.util.*

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

  3. 调用里面的功能

    -  在类主体中,只能包含以下内容:
    

成员变量的定义
构造方法
方法的定义

在Java中,Scanner类是用于读取用户输入的工具类,可以方便地从控制台或文件中读取数据,支持读取不同类型的数据,如字符串、整型、浮点型等。使用Scanner需要先创建一个Scanner对象,并指定读取数据的来源。如果要从控制台读取数据,则可以传入System.in作为参数。例如:

Scanner scanner = new Scanner(System.in);

读取控制台输入的字符串可以使用next()方法,例如:

String input = scanner.next();

如果要读取整数,则可以使用nextInt()方法,例如:

int num = scanner.nextInt();

如果要读取浮点数,则可以使用nextFloat()或nextDouble()方法,例如:

float f = scanner.nextFloat();
double d = scanner.nextDouble();

需要注意的是,在读取不同类型的数据时,需要确保输入的内容与所读取的数据类型相符合,否则可能会出现异常,需要进行异常处理。
另外,读取完数据后应该及时关闭Scanner对象,释放资源。可以使用close()方法来关闭对象,例如:

scanner.close();
- 练习:

输入字符串、整型、单精度浮点型、双精度浮点型

package chapter3;

import java.util.Scanner;

public class Test5 {
    public static void main(String args[]){
        //Scanner的使用
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        int i = scanner.nextInt();
        float f = scanner.nextFloat();
        double d = scanner.nextDouble();
        scanner.close();
        System.out.printf("%s %d %.2f %.2f%n", s, i, f, d);
    }
}

3.9 位运算

位运算是一种对二进制数字进行操作的运算方式,常用于底层系统开发、位掩码操作、图像处理等领域。在Java中,提供了多种位运算符来进行位操作。
以下是常用的位运算符及其功能:

  1. 与运算(&):两个数的对应位都为1时,结果为1,否则为0。
  2. 或运算(|):两个数的对应位有一个为1时,结果为1,否则为0。
  3. 异或运算(^):两个数的对应位不相同时,结果为1,否则为0。
  4. 取反运算(~):对一个数的每个位取反,即0变为1,1变为0。
  5. 左移运算(<<):将一个数的所有位向左移动指定的位数,低位补0。
  6. 右移运算(>>):将一个数的所有位向右移动指定的位数,高位补符号位(正数补0,负数补1)。
  7. 无符号右移运算(>>>):将一个数的所有位向右移动指定的位数,高位补0。
    下面是一些示例:
int a = 5;  // 二进制表示为: 00000101
int b = 3;  // 二进制表示为: 00000011

int c = a & b;   // 与运算,结果为: 00000001,即1
int d = a | b;   // 或运算,结果为: 00000111,即7
int e = a ^ b;   // 异或运算,结果为: 00000110,即6
int f = ~a;      // 取反运算,结果为: 11111010,即-6
int g = a << 2;  // 左移运算,结果为: 00010100,即20
int h = a >> 1;  // 右移运算,结果为: 00000010,即2
int i = a >>> 1; // 无符号右移运算,结果为: 00000010,即2

需要注意的是,位运算符只能用于整数类型(byte、short、int、long)的操作,不能用于浮点数类型。此外,在使用位运算时应谨慎,确保理解运算规则并避免出现意外的错误。

3.10 本章作业

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值