第 5 章 变量常量、表达式、运算符

文章由《大牛1对1学院》书写,保留所有权利,如有转载请注明来源。
如果你对内容有更好的建议,请联系我们。

大于号,>,
小于号,<。
一头大来一头小。
张开大嘴吃大的,
闭上小嘴吃小的。
——摘自小学课本。

先算加减,后算乘除,最后算括号。
——摘自小学课本。

上边两个运算符口诀你是否还历历在目,这是我们小学学习数学运算时的规则。
在Java中,运算符的规则和我们经常使用的数学运算符的运算规则完全一样。

5.1 常量和变量

5.1.1 常量

在一段程序或项目中,其值始终保持不变的量叫做常量,使用关键字final修饰。常量分为两种,一种是Java已经定义的常量,如:圆周率;另一种是用户自己定义的常量。
示例代码:

package com.chapter3;

public class Constant {

    public static void main(String[] args) {

        //定义一个常量
        final String projectName = "Hello World Project";

        // 输出自己定义的常量
        System.out.println(projectName);

        // 输出Java中已经定义的常量 圆周率:派
        System.out.println(Math.PI);

    }

}

运行结果:

Hello Word Project
3.141592653589793

常量是保持不变的量,当你对常量进行再次赋值时,会出现如下提示:

The final field 常量名 cannot be assigned

并且,IDE也会提示你无法再次赋值。

5.1.2 变量

在一段程序或项目中,其值会发生改变的量叫做变量。声明一个变量时,需要进行初始化后方可使用。
示例代码:

package com.chapter3;

public class Variable {

    public static void main(String[] args) {

        //定义一个变量 number
        int number = 10;
        //输出变量 number
        System.out.println(number);

        // 更改number的值
        number = 20;
        System.out.println(number);

        // 未进行初始化的变量,不可直接使用
        //int numberNoInit;
        //System.out.println(numberNoInit);

    }

}

运行结果:

10
20

5.2 表达式

在Java中,常量、变量、使用运算符连接起来的式子、一句代码都是表达式。
如下都是表达式:

100
true
"Java"
1+1

5.3 运算符

在Java种有赋值运算符、算数运算符(包括自增自减运算符)、关系运算符、逻辑运算符、三元运算符、位运算符、移位运算符等8种运算符。

5.3.1 赋值运算符

一个等号(=)符号在Java中是赋值运算,即把符号右边的运算结果赋值给等号左边的变量或常量。赋值运算符在编程工作中随处可见。
示例代码如下:

int result = 10 + 1;

正确的读法是:把10+1的结果11赋值给int类型的变量result。

赋值运算符的分类
赋值运算符有以下几类:
在这里插入图片描述
示例代码:

package com.chapter5;

public class AssignmentOperator {

    public static void main(String[] args) {

        int it = 10;
        int itt = 100;

        // 进行数学算数运算
        int itit = it + itt;
        System.out.println(itit);

        itt += 1;
        System.out.println(itt);

    }

}

运行结果:

110
101

5.3.2 算数运算符

算数运算符包括加(+)、减(-)、乘(*)、除(/)、求余(%)等5个运算,这些运算操作的主要是数值型的基本数据类型,和我们熟悉的常见数学运算是一样的。
示例代码:

package com.chapter5;

public class ArithmeticOperator {

    public static void main(String[] args) {

        int a = 100;
        int b = 200;

        // a加b
        int ab = a + b;
        System.out.println(ab);

        // a减b
        int aPlusB = a - b;
        System.out.println(aPlusB);

        // a乘以b
        int aMutiB = a * b;
        System.out.println(aMutiB);

        // a除以b
        int aDivideB = a / b;
        System.out.println(aDivideB);

        // a对于b求余
        int aRemainderB = a % b;
        System.out.println(aRemainderB);

    }

}

运行结果:

300
-100
20000
0
100

数据类型的自动提升
在进行算数计算时,对多个不同基本数据类型的值进行操作时,如果运算结果所使用的数据类型超过原来的数据类型,那么算数表达式的结果的数据类型会自动提升,以满足结果的表达需要。
提升规则如下:

byte、short、char —> int —> long —> float —> double

示例代码:

package com.chapter5;

public class ArithmeticOperatorPro {

    public static void main(String[] args) {

        int in = 10;
        char ch = 'A'; // 'A'=65

        // 错误的表示
        // char inch = in + ch;

        // 正确的表示
        int inch = in + ch;
        System.out.println(inch);

    }

}

运行结果:

75

可看到in是int类型,ch是char类型,其运算结果是int类型,已经超过了ch的char类型,这就是数据类型的自动提升。

5.3.3 自增自减运算符

自增自减运算符表示在变量本身基础上,自己增加或减少一个数量。自增自减运算符在编程工作中比较常用。
有以下两种:
符号 作用 举例说明
在这里插入图片描述
示例代码:

package com.chapter5;

public class AutoAddSub {

    public static void main(String[] args) {

        int it = 100;

        // it 在原 100 上,自己增大 1,结果就是101
        it++;
        System.out.println(it);

        int itit = 10;

        // it 在原 10 上,自己减小 1,结果就是9
        itit--;
        System.out.println(itit);

    }

}

运行结果:

101
9

++i 和 i++ 的区别
++i是先自增后赋值, i++是先赋值后自增。
示例代码:

package com.chapter5;

public class AutoAddSubNote {

    public static void main(String[] args) {

        int it = 100;

        // 操作顺序:先赋值,后自增
        int tj = it++;

        System.out.println("it:" + it);
        System.out.println("tj:" + tj);

        int itt = 10;

        // 操作顺序:先自增,后赋值
        int ittj = ++itt;

        System.out.println("itt:" + itt);
        System.out.println("ittj:" + ittj);

    }

}

运行结果:

it:101
tj:100
itt:11
ittj:11

5.3.4 关系运算符

关系运算符用于比较两个值(表达式)的大小,其结果是布尔类型,关系运算符在编程工作中十分常见。
在这里插入图片描述
示例代码:

package com.chapter5;

public class RelationalOperator {

    public static void main(String[] args) {

        int it = 100;
        int itit = 200;

        //判断是否小于
        boolean rl = it < itit;

        System.out.println(rl);
        
    }

}

运行结果:

true

5.3.5 逻辑运算符

如果我们在Java中表示1<x<10,那么就用到了逻辑运算符,把它拆解位1<x且x<10。逻辑运算符在编程中比较常用。
在这里插入图片描述
示例代码:

package com.chapter5;

public class LogicShortOperator {

    public static void main(String[] args) {

        boolean a = true;
        boolean b = false;

        // 逻辑与
        System.out.println(a & b);
        // 短路逻辑与
        System.out.println(a && b);

        // 逻辑或
        System.out.println(a | b);
        // 短路逻辑或
        System.out.println(a || b);

    }

}

运行结果:

false
true
false

短路逻辑运算符
在这里插入图片描述
注意事项:
加入a、b是参与短路逻辑运算的两个元素。

  1. 逻辑与&:a、b都进行计算;
  2. 短路与&&:如果a真,b计算,如果a假,b不计算;
  3. 逻辑或|:a、b都进行计算;
  4. 短路或||:如果a真,b不计算,如果a假,b计算。

示例代码

package com.chapter5;

public class LogicShortOperator {

    public static void main(String[] args) {

        boolean a = true;
        boolean b = false;

        // 逻辑与
        System.out.println(a & b);
        // 短路逻辑与
        System.out.println(a && b);

        // 逻辑或
        System.out.println(a | b);
        // 短路逻辑或
        System.out.println(a || b);

    }

}

运行结果:

false
false
true
true

5.3.6 三元运算符

三元运算符在编程工作中比较常见,它的格式如下:

布尔表达式 ? 表达式1 : 表达式2

运算规则:

  1. 计算关系表达式的值;
  2. 值为true,结果为表达式1的值;
  3. 值为false,结果为表达式2的值。

示例代码:

package com.chapter5;

public class TernaryOperator {

    public static void main(String[] args) {

        int a = 1;
        int b = 2;

        // 关系表达式?表达式1:表达式2
        int ternary = a > b ? 10 : 20;

        System.out.println(ternary);

    }

}

运行结果:

20

5.3.7 位运算符

在数据类型的开篇中,我们知道了计算机是使用二进制表示数据的,其存储单元是位(bit),又称为比特位。
在这里插入图片描述
位运算符就是对数据的比特位进行操作,只能适用于整数类型。
在这里插入图片描述
示例代码:

package com.chapter5;

public class BitOperator {

    public static void main(String[] args) {

        int a = 3; //二进制 0 0 1 1 
        int b = 6; //二进制 0 1 1 0

        //进行与运算,二进制 0 0 1 0 = 十进制的 2
        int result = a & b;
        System.out.println(result);

    }

}

运行结果:

2

5.3.8 移位运算符

移位运算符也是对二进制的数据进行操作的,也只能适用于整数类型。通过移动原来二进制的数据,其值发生了变化,组后得出一个新值。
在这里插入图片描述

示例代码:

package com.chapter5;

public class BitMoveOperator {

    public static void main(String[] args) {

        int a = 3 << 1;
        //3 的二进制 0 0 1 1
        //左边移动1位 0 1 1 0  = 十进制的6

        System.out.println(a);

    }

}

运行结果:

6

5.4 运算符的优先级

Java的运算符存在优先级别,级别高的运算符先执行运算,级别低的运算符后执行运算。他们的优先级关系如下表:
在这里插入图片描述
在这里插入图片描述
上表优先级为1的表示级别最高。这张表看似十分复杂,不过你没有必要强制记忆。随着编程经验的熟悉你会慢慢记住他们的使用级别。

示例代码:

package com.chapter5;

public class OperatorPriority {

    public static void main(String[] args) {

        int m = 10;
        int n = 100;

        // false && true
        boolean tag1 = m > n && m < n;
        System.out.println("tag1:" + tag1);

        /*
        false && true
        可以养成使用小括号的习惯,这样更加直观理解
         */
        boolean tag2 = (m > n) && (m < n);
        System.out.println("tag2:" + tag2);

    }

}

运行结果:

tag1:false
tag2:false

5.5 总结

其值始终保持不变的量叫做常量,使用关键字final修饰。
其值会发生改变的量叫做变量,需要进行初始化后方可使用。
常量、变量、使用运算符连接起来的式子、一句代码都是表达式。
在Java种有赋值运算符、算数运算符(包括自增自减运算符)、关系运算符、逻辑运算符、三元运算符、位运算符、移位运算符等8种运算符。
一个等号(=)符号是赋值运算,把符号右边的运算结果赋值给等号左边的变量或常量。
算数运算符包括加(+)、减(-)、乘(*)、除(/)、求余(%)等5个运算,操作的主要是数值型的基本数据类型。
自增自减运算符表示在变量本身基础上,自己增加或减少一个数量。
关系运算符用于比较两个值(表达式)的大小,其结果是布尔类型。
逻辑运算符有与、或、异或、非、短路与、短路或等6个,其结果是布尔类型。
三元运算符的格式是:布尔表达式?表达式1:表达式2,根据布尔表达式的结果返回其中一个表达式的值。
位运算符和移位运算符都是对比特位进行操作的,只能适用于整数类型。
Java的运算符存在优先级别,级别高的运算符先执行运算。

5.6 作业与思考

思考一:常量可以不用final修饰吗?
作业一:练习8种运算符的使用。
作业二:练习体验运算符的优先级。

文章由《大牛1对1学院》书写,保留所有权利,如有转载请注明来源。
如果你对内容有更好的建议,请联系我们。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值