标识符

  • 介绍 : 自己给, 方法, 变量起名的符号
  • 标识符的命名规则 :

    • 数字 0 ~ 9
    • 字母 a~z A~Z
    • _ $
    • 不能以数字开头
    • 不能是关键字
    • 严格区分大小写

      数据类型

  • 基本数据类型

  1. 整数
  2. byte 1个字节 -128~127
  3. short 2个字节
  4. int 4个字节
  5. long 8个字节
  6. 小数
  7. float 4个字节
  8. double 8个字节
  9. 布尔
  10. boolean 1个字节
  11. 字符
  12. char 2个字节
  • 今后定义变量的使用思路
    • 整数类型 : 首选int, 发现int装不下了, 将类型换成long (定义long类型变量的时候, 需要加入 L 的标识)
    • 小数类型 : 首选 double, 非要定义float类型变量, 需要加入F的标识

      算数运算符

      数值拆分
个位: 数值 % 10
十位: 数值 / 10 % 10
百位: 数值 / 10 / 10 % 10
千位: 数值 / 10 / 10 / 10 % 10;
万位: 数值 / 10 / 10 / 10 / 10 % 10;
...

对于一个数值的最高位(最左边), 简化计算

123 / 100 ---> 1
4567 / 1000 ---> 4
56789 / 10000 ---> 5

字符串的拼接操作

  • 当 + 号操作过程中, 遇到了 “” 字符串, + 号就是字符串连接符, 不是算数运算符
    • 识别技巧:能算则算,不能算大家连在一起

System.out.println("5+5="+5+5); // "5+5=55"``System.out.println("5+5="+(5+5)); // "5+5=10"``System.out.println("5*5=" + 5 * 5); // "5*5=25"

自增自减运算符

  1. 单独使用 (推荐) ``` ++, — 在变量的前面或者是后面, 没有区别

int a = 10; ++a; a—;


2.  参与运算使用 (面试题)

++在前 : 先自增, 再操作 int a = 10; int b = ++a; System.out.println(a); // 11 System.out.println(b); // 11

++在后 : 先操作, 再自增 int a = 10; int b = a++;

注意:<br />1.只能操作变量,不能操作字面量<br />a++; // 没毛病的<br />2++; // 没有这种形式,报错!<br />2.++ -- 如果不是单独使用,放在变量前后有明显区别<br />在变量前面:先+1,-1再使用变量<br />在变量后面:先使用变量,再对变量+1,-1
<a name="7c2cff48"></a>
### 类型转换-隐式转换

-  将取值范围小的数据或变量,  给取值范围大的变量赋值,  可以直接赋值 
   - 这里的小和大 , 指的是取值范围
```java
byte -- short -- int -- long -- float -- double

注意: float虽然占用4个字节, 但是取值范围比8个字节的long更大, 小数的二进制存储更加节省内存
  • 在运算过程中的隐式转换

    • byte short char 三个类型在运算的时候, 直接提升为 int类型

      类型转换-强制转换

  • 将取值范围大的数据或变量, 给取值范围小的变量赋值, 不能直接赋值, 需要强转

    • double 类型的数据强转为int类型,会精度损失,小数位直接丢失
      看程序说结果
      byte b1 = 3;
      byte b2 = 4;
      byte b3 = b1 + b2; 错误,byte的数据做运算,会先提升为int,不能用byte接收,需要强转类型
      byte b = 3 + 4;
      没有问题!
      Java存在常量优化机制 :
      在编译的时候(javac) 自动将 3和4这两个常量进行相加, 算出一个7,检查该结果是否在byte的取值范围内。
      不在: 报错 在: 编译通过 .class(字节码文件) : byte b = 7;

      赋值运算符

      ```
  1. 基本赋值运算符

     = : 将等号右边的数据, 赋值给左边的变量
    
  2. 扩展赋值运算符

     += : 将符号左右两边的数据, 做加法运算, 将结果赋值给左边的变量.
    
             int a = 10;
             a += 20;
             System.out.println(a);        // 30
    

    ```

        -= : 将符号左右两边的数据, 做减法运算, 将结果赋值给左边的变量.
        *=
        /=
        %=

注意: 扩展赋值运算符, 底层自带强转效果.

关系运算符

  • 理解: 比较运算符 ```java >

    = <

    <=

    != 结论: 关系运算符, 判断是否满足条件的,结果只能是boolean类型的 true, false

注意: = : 赋值 == : 比较

<a name="705c5677"></a>
### 逻辑运算符

- 代码层面 :  用于连接 boolean类型的表达式或者是值

`System.out.println(true & true);`

- 理解层面 :  逻辑运算符可以整合多个条件, 为一段整体的逻辑

`if(score >= 90 && score <= 100)`

- 分类
```java
&(与) : 且, 遇false则false
|(或) : 或, 遇true则true
!(非) : 取反,!false = true   !true = false
^(异或) : 相同为false, 不同为true
短路逻辑运算符 :
&   :  没有短路效果, 无论左边是否为false,右边都要继续执行
&&  :  具有短路效果, 左边为false的时候,  右边就不执行
            如果左边为true,右边继续执行

|   :  没有短路效果, 无论左边是否为true,右边都要继续执行
||  :  具有短路效果, 左边为true的时候, 右边就不执行
            如果左边为false,右边继续执行

结论 : 今后常用的逻辑运算符   &&  ||   !

三元运算符

  • 介绍 : (三目运算符) 根据一个判断条件, 达成二者选其一 ```java 格式 : 判断条件 ? 值1 : 值2;

执行流程:

   1. 执行判断条件, 看其返回结果是true还是false
   2. true : 值1就是最终结果
   3. false : 值2就是最终结果
<a name="fb5550cd"></a>
### 运算符的优先级

- () 优先级最高
- */ 高于 +-
- &&  的优先级高于 ||
<a name="61ea63d4"></a>
### 流程控制语句

- 分类 : 
   - 顺序结构  :   Java程序默认就是顺序结构
   - 分支结构  :   if ,  switch
   - 循环结构  :   for,  while,  do...while
<a name="31815b82"></a>
### 分支语句-if语句 (重点)
```java
if语句格式1 :

    if(判断条件){
        语句体;
    }

执行流程:
    1. 执行 () 中的判断条件, 看其返回结果是true, false
    2. true : 执行 {} 中的语句体
    3. false : 不执行 {} 中的语句体

注意事项:
    1. if语句 () 和 {} 之间不要写分号
    2. if语句 {} 中, 如果只有一条语句, {} 可以省略不写, 但是不建议!
    3. if语句 () 中, 无论简单还是复杂, 只要给一个boolean类型的true, false, 就符合语法规则
if语句的格式2 :

    if(判断条件){
        语句体1;
    }else{
        语句体2;
    }

执行流程:

    1. 执行判断条件, 看其返回结果是true, false
    2. true : 执行语句体1
    3. false : 执行语句体2
if语句格式3 :

    if (判断条件1) {
        语句体1;
    } else if (判断条件2) {
        语句体2;
    } else if (判断条件3) {
        语句体3;
    }
    ...
    else {
        语句体n+1;
    }

执行流程:

    1. 执行判断条件1, 看其返回结果是true, false
            true : 执行语句体1, 并结束整个的if语句.
            false : 进入第二步
    2. 执行判断条件2, 看其返回结果是true, false
            true : 执行语句体2, 并结束整个的if语句
            false : 进入第三步
            ...
    3. 如果给出的所有判断条件, 都是false, 将会执行最后的else
package com.itheima.test;

import java.util.Scanner;

public class IfTest1 {
    /*
        需求: 键盘录入考试成绩, 根据成绩所在的区间, 打印出不同的奖励机制

            95~100 : 自行车一辆
            90~94 : 游乐场玩一次
            80~89 : 变形金刚一个
            80以下 : 挨揍
     */
    public static void main(String[] args) {
        // 1. 键盘录入考试成绩
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的成绩:");
        int score = sc.nextInt();

        // 2. 判断成绩所在的区间
        if (score < 0 || score > 100) {
            System.out.println("请检查您输入的成绩是否是 0 ~ 100 之间");
        } else if (score >= 95 && score <= 100) {
            System.out.println("自行车一辆");
        } else if (score >= 90 && score <= 94) {
            System.out.println("游乐场玩一次");
        } else if (score >= 80 && score <= 89) {
            System.out.println("变形金刚一个");
        } else {
            System.out.println("挨顿揍");
        }
    }
}
package com.itheima.test;

import java.util.Scanner;

public class IfTest2 {
    /*
        需求: 键盘录入考试成绩, 根据成绩所在的区间, 打印出不同的奖励机制

            95~100 : 自行车一辆
            90~94 : 游乐场玩一次
            80~89 : 变形金刚一个
            80以下 : 挨揍

         -----------------------------------------------
            使用if语句的嵌套实现
         -----------------------------------------------
     */
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的成绩:");
        int score = sc.nextInt();

        if (score >= 0 && score <= 100) {
            // 代码要是能够走到这里, 代表分数正确分
            if (score >= 95 && score <= 100) {
                System.out.println("自行车一辆");
            } else if (score >= 90 && score <= 94) {
                System.out.println("游乐场玩一次");
            } else if (score >= 80 && score <= 89) {
                System.out.println("变形金刚一个");
            } else {
                System.out.println("挨顿揍");
            }
        } else {
            System.out.println("您的输入有误, 请检查是否是0~100之间!");
        }
    }
}