赞
踩
关于工程:
关于Module:
添加SDK:
+ - + - * / % ++ -- +
= += -= *= /= %=
- > < >= <=
- == !=
> < >= <=
只能适用于7种基本数据类型(不含boolean)== !=
适用于8种基本数据类型、引用数据类型。& && | || ^ !
- << >> >>>
- & | ^ ~
(条件表达式)? 表达式1 : 表达式2
规则:
判断条件表达式是true还是false,如果是true,则执行表达式1;如果是false,则执行表达式2
如果将运算的结果赋给一个变量的话,要求:表达式1与表达式2的类型一致。(相同 或 满足自动类型提升的规则即可)
- 案例:获取两个数的较大值;获取三个数的最大值
- 与分支结构的if-else对比:
凡是可以使用条件运算符的地方,都可以改写为if-else。反之,不一定。
在既可以使用条件运算符,又可以使用if-else的场景下,推荐使用条件运算符。因为条件运算符效率稍高。
我们在开发中,如果希望某个运算符优先运算的话,主动的添加一对()。
常见的一些运算符优先级谁高谁低呢?基本上是如你所想
。
- int x = 10;
- boolean y = false;
- if(x++ == 10 && y = true){...}
大家在开放时,如果涉及到多个运算符做运算,建议可以分行写
。
- 顺序结构:略,即代码从上往下依次执行
-
- 分支结构:if-else 、 switch-case
-
- 循环结构:for、while、do-while
- foreach放到集合章节中讲解
- 格式1:
- if(条件表达式){
- 语句块;
- }
-
- 格式2:"二选一"
- if(条件表达式) {
- 语句块1;
- }else {
- 语句块2;
- }
-
- 格式3:"多选一"
- if (条件表达式1) {
- 语句块1;
- } else if (条件表达式2) {
- 语句块2;
- }
- ...
- }else if (条件表达式n) {
- 语句块n;
- } else {
- 语句块n+1;
- }
- 说明1:
- > 如果多个条件表达式之间是"互斥"关系(或没有交集的关系),则多个条件表达式谁写在上面,谁写在下面都可以。
- > 如果多个条件表达式之间是包含关系,则通常需要将条件表达式范围小的声明在条件表达式范围大的上面。
-
- 说明2:
- > 我们可以在程序使用if-else的嵌套结构
- > 如果if-else中一对大括号内的语句块只有一行执行语句,则此一对大括号可以省略。但是,不建议大家省略!
-
- 说明3:
- > 开发中,在一些具体的题目中,可以在if-else if -else if -... -else 结构中省略else结构。
- switch(表达式){
- case 常量值1:
- 语句块1;
- //break;
- case 常量值2:
- 语句块2;
- //break;
- // ...
- [default:
- 语句块n+1;
- break;
- ]
- }
- 1. switch-case的执行过程:
- 根据switch中表达式的值,依次匹配一对{}内的case结构。一旦表达式与某个case的常量值相等,则执行此case中的语句块。
- 执行完此语句块之后,如果此case中包含break,则结束当前switch-case结构。
- 如果此case中不包含break,则会继续执行其后的case中的语句块(case穿透的场景)。直到遇到break或执行完default,才会结束switch-case结构。
-
- 2. 说明:
- > 在switch-case结构中可以使用break关键字,一旦执行,表示终止(或退出)当前switch-case结构。
- > 开发中,在使用switch-case的场景中,不加break的情况要多于加break的情况。
- > switch中的表达式只能是特定的如下类型的变量:
- byte \ short \ char \ int ; 枚举类型(jdk5.0新增) \ String(jdk7.0新增)
- > case后的常量值,需要与switch中表达式的值进行==的判断。如果返回true,则执行此case中的语句块。返回false,则不执行。
- > default类似于if-else结构中else。 可选的,且位置是灵活的。
- > 针对的变量的类型来讲,if-else没有限制,而switch-case有类型的限制,且建议case匹配的情况有限、不多的场景。
- > 二者的转换:凡是使用switch-case结构的,都可以转换为if-else。反之,不成立。
- > 开发中,在既可以使用switch-case,又可以使用if-else的情况下,推荐使用switch-case。因为其效率稍高。
- > if-else的主要优势:涉及到任何的分支结构,都可以使用if-else实现
- switch-case的主要优势:在可以使用if-else和switch-case的情况下,效率稍高。
- case穿透。
- 凡是循环结构,都有如下的4个要素:
- > ① 初始化条件部分
- > ② 循环条件部分 -->是boolean类型
- > ③ 循环体部分
- > ④ 迭代条件部分
- for(①;②;④){
- ③
- }
-
- 执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ...- ②
- 1. 注意:循环条件部分必须是boolean类型。
-
- 2. break关键字的使用
- > break可以使用在循环结构中 (复习:还可以使用在switch-case中)
- > 一旦执行,就跳出当前循环结构。
- ①
- while(②){
- ③
- ④
- }
① - ② - ③ - ④ - ② - ③ - ④ - ...- ②
- for循环和while循环一定可以相互转换。
- for、while循环的区别:初始化条件的作用域不同。while循环的初始化条件在while循环结束后,仍然有效。
- ①
- do{
- ③
- ④
- }while(②);
① - ③ - ④ - ② - ③ - ④ - 。。。- ②
- do-while相较于其他循环的区别:至少执行一次循环体。
- 在循环条件第1次判断时,如果是true的情况下,三个循环结构可以相互转换的。
- for循环:有明确的循环、遍历次数时。比如:遍历100以内的自然数、遍历数组
- while循环:没有明确的循环、遍历的次数时。比如:使用迭代器遍历集合。
- do-while循环:确保至少执行一次。
while(true) 、 for(;;)
不确定循环的次数时,使用此结构
在循环内部,满足某个条件的情况下,执行break。
- 外层循环{
- 内层循环{
-
- }
- }
说明:上述的外层循环、内存循环可以是for、while、do-while
技巧:
相同点:① 都可以使用在循环结构中 ② 其后不能编写执行语句
不同点:① 结束循环结构;结束当次循环 ②使用范围:break:switch-case结构中使用
- 1. 如何从键盘获取数据? 使用Scanner类
-
- 2. 如何使用Scanner类,从键盘获取数据呢? (掌握)
- 步骤1:导包
- import java.util.Scanner
-
- 步骤2:创建Scanner的对象(或实例)
- Scanner scanner = new Scanner(System.in);
-
- 步骤3:通过Scanner的对象,调用Scanner类中声明的方法,从键盘获取指定类型的变量
- scanner.nextXxx()
-
- 步骤4:关闭Scanner
- scanner.close();
-
- 3. Scanner类中提供了如下的获取不同类型变量的方法:
- 获取byte: nextByte();
- 获取short: nextShort();
- 获取int: nextInt();
- 获取long: nextLong();
- 获取float: nextFloat();
- 获取double: nextDouble();
- 获取boolean: nextBoolean();
-
- 注意,没有提供获取字符的方法。我们可以通过获取字符串的方法,来获取字符。
- 获取String: next() / nextLine()。
- 如何获取一个字符:next().charAt(0)
- 1. 调用Math类中的random(),可以获取一个[0.0,1.0)范围内的随机浮点数。
-
- 2. 如何获取[0,9]范围的随机整数:(int)(Math.random() * 10);
- 如何获取[1,10]范围的随机整数:(int)(Math.random() * 10) + 1;
- 如何获取[0,100]范围的随机整数:(int)(Math.random() * 101);
- 如何获取[10,100]范围的随机整数:(int)(Math.random() * 91) + 10; //[10,100]
-
- 公式:如何获取[a,b]范围的随机整数:(int)(Math.random() * (b - a + 1) + a)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。