运算符

1.赋值运算符:

在前面的学习中,使用最多的是什么呢?那就是"="。例如:

    int money = 1000;    //存储本金

使用"="将数值1000放入变量money的存储空间中,"="称为赋值运算符。例如:

    double height = 177.5;
    int weight = 78;

问题:

学员王浩的java成绩是80分,学员张萌的java成绩与王浩相同,输出张萌的成绩。

示列1:

publice class OperatorDemo{
    publice static void main (String[] args){
        int wangScore = 80;        //王浩成绩
        int zhangScore;            //张萌成绩
        zhangScre = wangScore;
        System.out.println("张萌的成绩是:" + zhangScore);
    }
}

运行结果如图:

示列1

由示列1可知,"=" 可以将某个数值赋值给变量,或是将某个表达式的赋值给变量。表达式就是符号(如加号,减号)与操作数(如b、3等)的组合。例如:

    int b;
    int a = (b + 3) * (b-1);

注意:

最后一个语句将变量b的值取出后进行计算,然后将计算结果存储到变量a中。如果写成"(b + 3) * (b - 1) = a",则会出错。切记,"=" 的功能是将等号右边表达式的结果赋值给等号左边的变量。

2.算术运算符

我们小时候就开始学习如何进行算术运算了。最简单的算术运算是加、减、乘、除。那么,如何编写程序让计算机来完成算术运算呢?java中提供运算功能的就是算术运算符,它的主要使用数值操作数进行数学计算。下面展示了常用的算术运算符。

常用算术运算符

运算符说明举例
+加分运算符,求操作数的和5+3 等于8
-减法运算符,求操作数的差5-3 等于2
*乘法运算符,求操作数的乘5*3 等于15
/除法运算符,求操作数的商5/3 等于1
%取余运算符,求操作数相除的余数5%3 等于2

下面就使用java提供的算术运算符来解决一个简单的问题

问题:

从控制台输入学员王浩的三门成绩(STB、java、SQL)的成绩,编写程序实现:java课程和SQL课程的分数之差;三门课程的平均分。

分析:

先声明变量来存储数据,数据来源于用户从控制台中输入的信息;然后进行计算并输出结果。

示列2:

import java.util.Scanner;

public class ScoreStat {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("STB的成绩是:");
        int stb = input.nextInt();        //STB成绩
        System.out.println("java的成绩是:");
        int java = input.nextInt();        //java成绩
        System.out.println("SQL的成绩是:");
        int sql = input.nextInt();        //SQL成绩
        int diffen;                        //声明int变量的类型,存储分数差
        double avg;                        //声明double类型的变量,存储平均分
        System.out.println("----------------------------------------");
        System.out.println("STB\tjava\tSQL");
        System.out.println(stb + "\t" + java + "\t" + sql);
        System.out.println("----------------------------------------");
        diffen = java -sql;                //计算Java和SQL的成绩差
        System.out.println("java和SQL的成绩差:" + diffen);
        avg = (stb + java + sql) /3;    //计算平均分
        System.out.println("3门课的平均分是:" + avg);
    }
}
运行结果如图:

示列

示列2与前面不同的是,可以从控制台输入数据,然后把它存储在已经定义好的变量中,而不是直接在程序中给变量进行赋值。这种交互是通过两行代码来实现的。

Scanner input = new Scanner(System.in);

int stb = input.nextInt();

这两行代码的作用就是通过键盘的输入得到STB的成绩。这是java所提供的从控制台获取键盘输入的功能,就像System.out.println("")可以向控制台输入信息一样。这里,获取的是一个整型变量,因此调用nextln()方法。需要注意的是要使用这个功能,必须java源代码的第一行写上如下语句。

`import    java.utli.Scanner;`

或者

`import    java.util.*;`

后面会解释,只需要记住它的写法即可。

另外,算术运算符的使用基本上和平时进行的加减乘除运算一样,也遵守"先乘除后加减,必要时加上括号表示运算的先后循序"的原则。要特别注意的是,在使用“/”运算符进行运算时,一定要分清那一部分是被除数,必要时应加上括号。例如:Systrm.out.println(2+4+6/2);以上代码计算的是2+4+(6/2),而不是(2+4+6)/2。另外,还有两个非常特殊且有用的运算符:自加运算符“++”和自减运算符“++”运算符只需要一个操作数例如;

int num = 3;

int num2 = 2;

num++;

num2--;

这里,“num++”等价于“num = num+1”,“num2--”等价于“num2 = num2-1;。

3.数据类型转换

1.为什么需要数据类型转换

​ 问题:某班第一次考试平均分是81.29,第二次比第一次增加了2分,第二次的平均分是多少?

分析:有时候会遇到这样的情况:必须将一个int数据类型的变量与一个double数据类型的变量相加。那么不同的数据类型能进行运算吗?运算的结果又是什么数据类型呢?

2.如何进行数据类型转换

1)自动数据类型转换

示列3:
public clacc AutoTypeChange{
    public static void main(String[] args){
        double firstAvg = 81.29;                            //第一次考试的平均分
        double secondAvg;                                    //第二次考试的平均分
        int rise = 2;                                       //增长的分数
        secondAvg = firstAvg +rise;                         //自动类型转换
        System.out.print("第二次平均分是:"+secondAvg);          //显示第二次考试平均分
    }
}
程序运行结果如图:

示列3

doublie 型变量和int型变量相加后,计算的结果赋给一个double型变量,这时就发生了自动类型转换

规则1:如果一个操作数位double类型,则整个表达式可提升为double类型。

规则2:满足自动转换的条件。

两种类型要兼容:数据类型(整型和浮点型)互相兼容

目标类型大于源目标型:double类型可以存放int类型数据,因为为double类型变量分配的空间宽度足够存储int类型变量。因此我们把int类型

问题:

去年Apple笔记本所占的市场份额是20%,去年增长的市场份额是9.8%,求今年所占的份额?

分析:

不难发现计算方法并不难,原有的市场份额加上增长的市场份额便是现在所占的市场份额。因此,可以声明一个int类型变量before来存储去年的市场份额,一个double类型变量rise来存储增长的部分。但是如果直接将这两个变量的值相加,然后将计算结果直接赋给一个int类型的变量now会提示出问题吗?尝试后发现MyEclipse会提示"类型不匹配"的信息。

示列4:

publice class TypeChange{
    publice static void main(String[] args){
        int before = 20;                    //Apple笔记本市场份额
        double rise = 9.8;                    //增长的份额
        //计算新的市场份额(double类型变量强制转换成int类型变量)
        int now = before + (int)rise;        //现在的份额
        System.out.printl("新的市场份额是:" + now);
    }
}

示列4给出了解决方案,运行结果如下

**新的市场份额是:29**

根据类型提升规则,表达式(before + rise)的值应该是double类型,但是最后的结果却是要转变成int类型变量now,由于不能进行放大转换,因此必须进行显式地强制类型转换。

语法:

(数据类型)表达式

在变量前加上括号,括号中的类型就是要强制转换成的类型。例如:

double d = 34.5634;
int b = (int)d;

运行后b的值如下:

34

从示列中可以看出,由于强制类型转换往往是从宽度大的类型转换成宽度小的类型,使数值损失了精度(如2.3变成了2,34.5634变成了34),因此可以

4.double类型

事物往往有真还有假之分,如在判断一件艺术品的时候说:“这是真的” 或 “这是假的”。另外,也会做一些这样的判断,如 “地铁2号线的首发时间是5:00吗?” 、“这次考试成绩在90分之上吗?” 、“健身俱乐部的年费低于1000元吗?” 等,这些问题都需要经过判断。但答案只能有两个,要么是真,要么是否。程序也一样,有时也需要判断真假。这时就需要一种数据类型,专门用来表示真和假。java中使用boolean类型表示真假。’‘boolean’’又称‘’布尔‘’,所以我们常说‘’布尔类型‘’。boolean是java的关键字,所有字母为大小写。

表示真假可以用boolean类型,那么怎么表示呢?其实boolean类型有两个值,而且只有这两个值,boolean类型的值如下所示。

boolean类型的值:
说 明
true
false

5.关系运算符

现在知道了重新用boolean类型表示真和假,但是程序任何知道真假呢?程序可以通过比较大小、长短、多少等得知其真假。java提供一种可以比较大小、长短、多少等运算符,这就是关系运算符。java语言中提供了关系运算符。如下所示。

关系运算符:

关系运算符说 明举 例
>大于99>100,结果为false
<小于大象的寿命<乌龟的寿命,结果为true
>=大于等于你的考试成绩>=200,结果为false
<=小于等于每次的考试成绩<=60分,结果为flase
==等于地球的大小==篮球的大小、结果为false
!=不等于水的密度!= 铁的密度,结果为false

从上所示可以看出,关系运算符是用来做比较运算的,而比较的结果是一个boolean类型的值,要么是真(true),要么是假(flase)。

问题:

从控制台输入张三同学的成绩,与李四的成绩(80分)进行比较,然后输出‘’张三成绩比李四成绩高吗?‘’这句话的判断结果。

分析:

程序要实现的功能可以分为以下两部分。

  1. 从键盘获取数据。
  2. 比较数据,并输出比较结果。

示列5

import java.util.Scanner;

public class BoolTest {
    public static void main(String[] args) {
        //java输入的一种方法
        Scanner input = new Scanner(System.in);
        int lisi = 80;                            //学员李四的成绩
        boolean isBig;                            //声明一个boolean类型的变量
        System.out.println("输入学员张三的成绩:");   //提示要输入学员张三的成绩
        int zhangSan = input.nextInt();           //输入张三的成绩
        isBig = zhangSan > lisi;                  //将比较的结果保存在boolean变量中
        System.out.println("张三成绩比李四高吗?" + isBig);   //输出比较结果
    }
}
程序运行如图:

示列5

由示列5可见,和所有其他数据类型一样,在使用boolean类型之前,也需要进行声明和赋值,如下所示。

boolean isBig;                            //声明一个boolean类型的变量
isBig = zhangSan > lisi;                  //将比较的结果保存在boolean变量中

比较的结果是一个boolean类型的值,结果为‘’假‘’,因此示列5的输出结果为false。

最后修改:2021 年 11 月 26 日 10 : 32 AM
如果觉得我的文章对你有用,请随意赞赏