标识符
整数
byte 1个字节 -128~127
short 2个字节
int 4个字节
long 8个字节
小数
float 4个字节
double 8个字节
布尔
boolean 1个字节
字符
char 2个字节
- 今后定义变量的使用思路
个位: 数值 % 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"
自增自减运算符
- 单独使用 (推荐) ``` ++, — 在变量的前面或者是后面, 没有区别
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更大, 小数的二进制存储更加节省内存
在运算过程中的隐式转换
将取值范围大的数据或变量, 给取值范围小的变量赋值, 不能直接赋值, 需要强转
基本赋值运算符
= : 将等号右边的数据, 赋值给左边的变量
扩展赋值运算符
+= : 将符号左右两边的数据, 做加法运算, 将结果赋值给左边的变量. int a = 10; a += 20; System.out.println(a); // 30
```
-= : 将符号左右两边的数据, 做减法运算, 将结果赋值给左边的变量.
*=
/=
%=
关系运算符
注意: = : 赋值 == : 比较
<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之间!");
}
}
}