注册 登录
Java基础教程

第一章: 开启Java学习之旅

第二章: 掌握计算机基础知识

第三章: 掌握命令行基础知识

第四章: 我的第一个Java程序

第五章: Java编程必备基础

第六章: Java编程的核心:控制结构

第七章: Java面向对象基础

第八章: Java面向对象进阶

第九章: Java字符串类型

第十章: Java数组与数据结构

第十一章: Java高级数据结构

第十二章: Java并发编程基础

首页 > Java基础教程 > 第五章: Java编程必备基础 > 5.5节: 让数据动起来-数据的运算

5.5节: 让数据动起来-数据的运算

薯条老师 2021-11-11 11:32:25 168079 0

编辑 收藏

广州番禺Python, Java小班周末班培训

第四期线下Java, Python小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析, Java中高级工程师培训。授课详情请点击:http://chipscoco.com/?cate=6

5.5.1 理解数据运算

常见的四则运算就是一种数据运算,利用四则运算可以对两个以上的数字作加减乘除。比较两个或多个数值的大小,也是一种数据运算。根据数据运算的不同性质,可以将其分为算数运算,关系运算,逻辑运算。

 

不论是算数运算还是关系运算,或是其它类型的运算,都是按照特定的逻辑规则对数据进行表示和处理的过程。例如在等式1+1=2中,将两物相加的结果用字符2进行表示。

图片.png 

1+1之所以等于2,是因为我们先有了物物相加的生活经验,然后以数字符号的形式来表示这种算数逻辑的处理过程。 

5.5.2 操作符与操作数

简言之,操作符就是表示各类数据运算的符号,例如用符号+表示加法,用符号-表示减法。操作数,就是参与数据运算的数,按其位置顺序,可将操作数分为左操作数和右操作数。例如在算数运算1+2中,数字1与数字2都是操作数,1是左操作数,2是右操作数。

5.5.3 Java中的数据运算

Java中的数据运算主要有赋值运算,算数运算,关系运算,逻辑运算。

(1) 赋值运算

赋值运算是指将值赋予变量的过程。Java中的赋值运算符号是“=”,赋值运算符左边的操作数必须是变量。

代码实例-定义布尔类型变量:

// 定义布尔类型变量is_happy,初始化为true
boolean is_happy = true;
// 将变量is_happy赋值为false
is_happy = false;

(2) 算数运算

算数运算就是加减乘除。Java中的算数运算符:

算数运算符

 

描述

+

加法运算

-

减法运算

*

乘法运算

/

除法运算

%

取余运算

++

自增运算

--

自减运算

代码实例-计算整数各位的和:

/**
 * @author 薯条老师
 * @date  2021-08-17
 * @version 1.0
 */
public class HelloJava {
    public  static void main(String[] args) {
        // 定义year变量,值为2020
        int year = 2020;
        // 定义sum变量,用来保存数字各位的和
        int sum = 0;
        // 1. 除以1000,得到千位数
        int number = year/1000;
        // 与千位数相加
        sum = sum+number;
        // 2. 与1000取余,去掉千位数
        year = year % 1000;
        // 除以100,得到百位数
        number = year / 100;
        // 与百位数相加
        sum = sum+number;
        // 3. 与100取余,去掉百位数
        year = year % 100;
        // 除以10,得到十位数
        number = year / 10;
        // 与十位数相加
        sum = sum+number;
        // 4. 与10取余,去掉个位数
        year = year % 10;
        // 除以1,得到个位数
        number = year / 1;
        // 与个位数相加
        sum = sum+number;
        System.out.println(sum);
    }
}
代码讲解:

 (1)将数字与各数位的基数作整除运算,可以获取当前数位的数字,例如千位数的基数为1000,百位数的基数为100,十位数的基数为10,以此类推。将2020与1000进行整除,结果为2,显然2就是千位数的数字。

(2)将数字与数位的基数进行求余运算,可获得下一数位的数。例如2121与1000进行求余运算,余数为121。如果余数小于数位的基数,那么说明该数位的数字为0。例如2020与1000进行求余运算,余数为20,20小于100,那么百位上的数字为0。

自增自减运算

自增或自减运算是在当前值的基础上加一或减一,然后再将值赋值给变量。自增或自减又分为前缀自增/自减,后缀自增/自减。 前缀自增/自减是指操作符在变量的前面,例如以下代码:

public class HelloJava {
    public  static void main(String[] args) {
        // 定义整型变量number,初始化为0
        int number = 0;
        // 使用后缀自增运算,先赋值后自增
        int value = number++;
        System.out.println("value的值:"+value+" number的值:"+number);
    }
}

程序输出的结果为:

value的值:0 number的值:1

后缀自增/自减会先做赋值运算,然后再自增/自减,所以为什么在程序的输出中value的值为0,number的值为1。前缀自增/自减则会先做自增/自减运算,再做赋值运算,继续看代码实例:

public class HelloJava {
    public  static void main(String[] args) {
        // 定义整型变量number,初始化为1
        int number = 1;
        // 使用前缀自减运算,先自减后赋值
        int value = --number;
        System.out.println("value的值:"+value+" number的值:"+number);
    }
}

程序输出的结果为:

value的值:0 number的值:0

算数运算与赋值运算可以进行组合。

代码实例-算数运算的复合运算:

public class HelloJava {
    public  static void main(String[] args) {
        int number = 0;
        // number+=2 等价于number=number+2
        number +=2;
        System.out.println("number的值:"+number);
    }
}
代码讲解:

(1) 定义了一个number变量,值为0

(2) number += 2等价于number = number + 2,先将numbe的值与2进行加法运算,再将

计算的结果赋值给变量number。。

(3)其它的算数运算同样可以与赋值运算组成复合运算,以此类推。

(3) 关系运算

关系运算,顾名思义,就是比较值的大小。关系运算的结果为布尔类型。Java中的关系运算符:

关系运算符

 

描述

>

比较左操作数是否大于右操作数

<

比较左操作数是否小于右操作数

==

比较左操作数是否与右操作数相等

>=

比较左操作数是否大于等于右操作数

<=

比较左操作数是否小于等于右操作数

!=

比较左操作数是否不等于右操作数

代码实例-判断两个数的大小 :

public class HelloJava {
    public  static void main(String[] args) {
        int x = 1;
        int y = 2;
        // 判断x是否大于y,输出的结果为布尔类型
        boolean result = x > y;
        // result的值为false
        System.out.println("result的值:"+ result);
    }
}

(4) 逻辑运算

逻辑运算,用来计算表达式逻辑值的真假。Java中的逻辑运算符:

逻辑运算符

 

描述

&&

逻辑与运算,所有表达式的值为真值时,结果才为真。

||

逻辑或运算,只要其中一个为真,那么结果就为真。

逻辑非运算,非真就是假,非假就是真。

在逻辑与运算中,操作数的值都为真时,结果才为真。在逻辑或运算中,操作数的值只要有一个为真,结果就为真。not表示的是逻辑非运算,即条件的对立面,非真就是假,非假就是真,输出的是true或者false,分别代表真或假。

逻辑运算的短路逻辑

短路逻辑,即在进行逻辑运算时,一旦符合短路逻辑条件,就立即停止表达式后面的逻辑运算。这里的短路逻辑条件,即,逻辑与运算中只要其中一个操作数为假,就停止运算,输出为假。逻辑或运算中只要其中一个操作数为真,就停止计算,输出为真。关于逻辑运算和短路逻辑的代码实例,在第七章介绍条件控制结构时再举例讲解,读者现在仅需掌握各逻辑操作符的基础概念。

5.5.4 结合性与优先级

结合性是指运算的顺序,数据运算的结合性主要有左结合性和右结合性。左结合性是指运算时从左至右进行运算,右结合性是从右至左进行运算。在Java中赋值运算为右结合性,其它运算都为左结合性。

代码实例-赋值运算的右结合性

int x =3;
int y = 5;
int z = 7;
// 赋值运算为右结合性,按从右到左的顺序来赋值
x = y = z = 10;
// 经过以上赋值以后,x,y,z的值均为10

代码讲解:

(1) 赋值运算的结合性为从右至左,所以首先赋值的是z=10。

(2) 然后将变量z的值再赋值给变量y,将变量y的值再赋值给x

优先级是指数据运算中存在多个运算符时,优先执行哪种运算。比如在四则运算中,会优先进行乘除法运算,然后再进行加减法运算。

代码实例-简单的四则运算

public class HelloJava {
    public  static void main(String[] args) {
        int x =3;
        int y = 5;
        int z = 7;
        // 优先计算y*z,再与x相加
        int sum = x+y*z;
        System.out.println("sum的值:"+sum);
    }
}

代码讲解:

(1) 乘法的优先级最高,优先计算y*z,结果为35,然后再计算x+35的值

(2) x的值为3,所以最终的值为38

可按优先级高低,将Java中的各类运算进行排序:

算数运算 > 关系运算 >  逻辑运算 > 赋值运算

在进行数据运算时,可通过()符号来强制运算的优先级,即,使用()括住的优先级是最高的。

代码实例-优先计算x+y

public class HelloJava {
    public  static void main(String[] args) {
        int x =3;
        int y = 5;
        int z = 7;
        // 优先计算x+y,再与z相乘
        int sum = (x+y)*z;
        System.out.println("sum的值:"+sum);
    }
}

代码讲解:

(1) 先计算()里面的x+y的值,因为()里面的优先级最高

(2) 再将x+y的值与z相乘,最终结果为56

5.5.5 课后习题

(1) Java中主要有哪些数据运算?

(2) 简述你对短路逻辑的理解,并举出一个生活中的例子。

(3) 如果赋值运算为左结合性,那么在5.5.4节的代码实例中x,y,z的值分别为多少?

(4) 编写一段简单的代码,以测试赋值运算的优先级

5.5.6 高薪就业班



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录