美文网首页
2023-11-20第02章 变量与运算符

2023-11-20第02章 变量与运算符

作者: 大也 | 来源:发表于2023-11-22 09:16 被阅读0次

    -- ---------------------- 本章概况
    -- ---------------------- 课件
    -- ---------------------- 随堂复习与企业真题
    -- ---------------------- 拓展练习

    -- ---------------------- 本章概况


    image.png
    image.png

    -- ---------------------- 课件
    -- 2-1:关键字、保留字与标识符

    标识符命名规则、规范

    > 包名:多单词组成时所有字母都小写:xxxyyyzzz。
    > 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
    > 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
    > 常量名:所有字母都大写。MAX_VALUE
    

    -- 2-2:变量的分类与定义、注意点
    变量按数据类型的分类


    image.png

    变量的定义格式

    给变量赋值,就是把“值”存到该变量代表的内存空间中。同时,给变量赋的值类型必须与变量声明的类型一致或兼容。
    

    -- 2-3:整型和浮点型变量的使用

    - float:`单精度`,尾数可以精确到7位有效数字。很多情况下,精度很难满足需求。    
    - double:`双精度`,精度是float的两倍。通常采用此类型。
    - 定义float类型的变量,赋值时需要以"`f`"或"`F`"作为后缀。
    - Java 的浮点型`常量默认为double型`。
    
    - 并不是所有的小数都能可以精确的用二进制浮点数表示。二进制浮点数不能精确的表示0.1、0.01、0.001这样10的负次幂。
    - 浮点类型float、double的数据不适合在`不容许舍入误差`的金融计算领域。如果需要`精确`数字计算或保留指定位数的精度,需要使用`BigDecimal类`。
    
    - 8 bit = 1 Byte
    - 1024 Byte = 1 KB
    

    -- 2-4:字符型和布尔型变量的使用
    字符型:char

    ![image.png](https://img.haomeiwen.com/i2673147/ba6eb797d729eeb0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ![image.png](https://img.haomeiwen.com/i2673147/b9e5635c53af4f40.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    不可以使用0或非 0 的整数替代false和true,这点和C语言不同。
    

    -- 2-5:基本数据类型变量的自动类型提升
    提升规则
    特别的:byte、short、char

    (1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时
    (2)当存储范围小的数据类型与存储范围大的数据类型变量一起混合运算时,会按照其中最大的类型运算。
    (3)当byte,short,char数据类型的变量进行算术运算时,按照int类型处理。
    

    -- 2-6:基本数据类型变量的强制类型转换
    转换格式

    (1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)强制转换为存储范围小的变量时,可能会`损失精度`或`溢出`。
    (2)当某个值想要提升数据类型时,也可以使用强制类型转换。这种情况的强制类型转换是`没有风险`的,通常省略。
    (3)声明long类型变量时,可以出现省略后缀的情况。float则不同。
    

    -- 2-7:String与基本数据类型变量间的运算

    1、任意八种基本数据类型的数据与String类型只能进行连接“+”运算,且结果一定也是String类型
    2、String类型不能通过强制类型()转换,转为其他的类型
    

    -- 2-8:二进制的表示、二进制与十进制间的转换
    原码、反码、补码

    ![image.png](https://img.haomeiwen.com/i2673147/6a45460c7472ae1e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    -- 2-9:二进制与八进制、十六进制间的转换

    全转 10进制 或者 2进制 再转 八进制、十六进制间的转换
    

    -- 2-10:算术运算符

    ![image.png](https://img.haomeiwen.com/i2673147/90a161d336a17e82.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    ![image.png](https://img.haomeiwen.com/i2673147/f27e5a3abe20bc52.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    ++、--

    变量在单独运算的时候,变量`++前`和变量`后++`,是没有区别的。
    复合使用 变量`++前` :变量先自增1,然后再运算。
    复合使用 变量`后++` :变量先运算,然后再自增1。
    -- 一样
    

    -- 2-11:赋值运算符

    扩展赋值运算符: +=、 -=、*=、 /=、%=
    

    -- 2-12:比较运算符、逻辑运算符

    ![image.png](https://img.haomeiwen.com/i2673147/ff72ffd080d36005.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    = 与 ==

    不一样  == 相等  = 赋值
    

    & 与 &&、|与||

      && :如果符号左边是false,则不再继续执行符号右边的操作
      - 建议:开发中,推荐使用 && 
     || :如果符号左边是true,则不再继续执行符号右边的操作
      - 建议:开发中,推荐使用 ||
    

    -- 2-13:位运算符
    理解下细节

    ![image.png](https://img.haomeiwen.com/i2673147/523b9f35cde4863d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    -- 2-14:条件运算符与运算符的优先级

    (条件表达式)? 表达式1:表达式2
    
    ![image.png](https://img.haomeiwen.com/i2673147/9aea99b8f90b4c89.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    1. 【拓展】关于字符集
    计算机中储存的信息都是用`二进制数`表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为`编码` 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为`解码` 。
    ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码)对`英语字符`与二进制位之间的关系,做了统一规定。这被称为ASCII码。
    ISO-8859-1字符集,拉丁码表,别名Latin-1
    GB就是国标的意思,是为了`显示中文`而设计的一套字符集。GBK:最常用的中文码表。
    Unicode编码为表达`任意语言的任意字符`而设计,也称为统一码、标准万国码。
    Unicode是字符集,UTF-8、UTF-16、UTF-32是三种`将数字转换到程序数据`的编码方案。顾名思义,UTF-8就是每次8个位传输数据。
    

    -- 2-15:本章随堂复习与企业真题
    -- ---------------------- 随堂复习与企业真题
    -- a1 关键字、保留字

    • 关键字:被Java赋予特殊含义的字符串。

      • 官方规范中有50个关键字
      • true、false、null虽然不是关键字,但是可以当做关键字来看待。
    • 保留字:goto 、 const

    -- a2 标识符

    包名:多单词组成时所有字母都小写
    类名、接口名:多单词组成时,所有单词的首字母大写
    变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
    常量名:所有字母都大写

    -- a3 变量的基本使用(重点)

    1. 定义变量时,变量名要遵循标识符命名的规则和规范。
    2. 说明:
      ① 变量都有其作用域。变量只在作用域内是有效的,出了作用域就失效了。
      ② 在同一个作用域内,不能声明两个同名的变量
      ③ 定义好变量以后,就可以通过变量名的方式对变量进行调用和运算。
      ④ 变量值在赋值时,必须满足变量的数据类型,并且在数据类型有效的范围内变化。

    -- a4 基本数据类型变量的使用(重点)
    基本数据类型(8种):
    整型:byte \ short \ int \ long
    浮点型:float \ double
    字符型:char
    布尔型:boolean

    引用数据类型:
    类(class)
    数组(array)
    接口(interface)
    枚举(enum)
    注解(annotation)
    记录(record)

    测试整型和浮点型:
    测试字符型和布尔型:

    -- a5.1 基本数据类型变量间的运算规则(重点)
    /*
    测试基本数据类型变量间的运算规则。

    1. 这里提到可以做运算的基本数据类型有7种,不包含boolean类型。

    2. 运算规则包括:
      ① 自动类型提升
      ② 强制类型转换

    3. 此VariableTest3.java用来测试自动类型提升

    规则:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型。

    byte 、short 、char ---> int  --->  long  ---> float ---> double
    
    特别的:byte、short、char类型的变量之间做运算,结果为int类型。
    

    说明:此时的容量小或大,并非指占用的内存空间的大小,而是指表示数据的范围的大小。
    long(8字节) 、 float(4字节)

    */

    -- a5.2 强制类型转换
    /*
    此VariableTest4.java用来测试强制类型转换

    规则:

    1. 如果需要将容量大的变量的类型转换为容量小的变量的类型,需要使用强制类型转换
    2. 强制类型转换需要使用强转符:()。在()内指明要转换为的数据类型。
    3. 强制类型转换过程中,可能导致精度损失。
      */

    -- a6 String类的使用、与基本数据类型变量间的运算(重点)
    /*

    基本数据类型与String的运算

    一、关于String的理解

    1. String类,属于引用数据类型,俗称字符串。
    2. String类型的变量,可以使用一对""的方式进行赋值。
    3. String声明的字符串内部,可以包含0个,1个或多个字符。

    二、String与基本数据类型变量间的运算

    1. 这里的基本数据类型包括boolean在内的8种。
    2. String与基本数据类型变量间只能做连接运算,使用"+"表示。
    3. 运算的结果是String类型。

    */

    -- a7 常识:进制的认识

    • 熟悉:二进制(以0B、0b开头)、十进制、八进制(以0开头)、十六进制(以0x或0X开头)的声明方式。
    • 二进制的理解
      • 正数:原码、反码、补码三码合一。
      • 负数:原码、反码、补码不相同。了解三者之间的关系。
      • 计算机的底层是以补码的方式存储数据的。
    • 熟悉:二进制与十进制之间的转换
    • 了解:二进制与八进制、十六进制间的转换
      -- a8.1 运算符(较常用的是重点)
      /*
      测试运算符的使用1:算术运算符的使用
              • / % (前)++ (后)++ (前)-- (后)-- +
                /
                -- a8.2赋值运算符
                /

                测试运算符的使用2:赋值运算符
    1. = +=、 -=、*=、 /=、%=
    2. 说明:
      ① 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
      ② 支持连续赋值。
      ③ +=、 -=、*=、 /=、%= 操作,不会改变变量本身的数据类型。
      /
      -- a8.3 比较运算符
      /

      测试运算符的使用3:比较运算符
    3. == != > < >= <= instanceof
    4. 说明
      ① instanceof 在面向对象的多态性的位置讲解。
      ② == != > < >= <= 适用于基本数据类型。(细节:> < >= <=不适用于boolean类型)
      运算的结果为boolean类型。
      ③ 了解: == != 可以适用于引用数据类型
      ④ 区分:== 与 =
      /
      -- a8.4 逻辑运算符
      /

      测试运算符的使用4:逻辑运算符
    5. & && | || ! ^
    6. 说明:
      ① 逻辑运算符针对的都是boolean类型的变量进行的操作
      ② 逻辑运算符运算的结果也是boolean类型。
      ③ 逻辑运算符常使用条件判断结构、循环结构中
      /
      -- a8.5 位运算符(了解)
      /

      测试运算符的使用5:位运算符
    7. << >> >>> & | ^ ~
    8. 说明:
      ① << >> >>> & | ^ ~ :针对数值类型的变量或常量进行运算,运算的结果也是数值

      << : 在一定范围内,每向左移动一位,结果就在原有的基础上 * 2。(对于正数、负数都适用)

    : 在一定范围内,每向右移动一位,结果就在原有的基础上 / 2。(对于正数、负数都适用)

    1. 面试题:高效的方式计算2 * 8 ?
      2 << 3 或 8 << 1
      /
      -- a8.6 条件运算符
      /

      测试运算符的使用6:条件运算符
    2. (条件表达式)? 表达式1 : 表达式2
    3. 说明:
      ① 条件表达式的结果是boolean类型。
      ② 如果条件表达式的结果是true,则执行表达式1。否则,执行表达式2。
      ③ 表达式1 和 表达式2 需要是相同的类型或能兼容的类型。
      ④ 开发中,凡是可以使用条件运算符的位置,都可以改写为if-else。
      反之,能使用if-else结构,不一定能改写为条件运算符。
      建议,在二者都能使用的情况下,推荐使用条件运算符。因为执行效率稍高。
      */
      -- a8.7 运算符的优先级
    • 如果想体现优先级比较高,使用()
    • 我们在编写一行执行语句时,不要出现太多的运算符。

    相关文章

      网友评论

          本文标题:2023-11-20第02章 变量与运算符

          本文链接:https://www.haomeiwen.com/subject/rwhmwdtx.html