JAVA基础学习——Day4(switch分支和循环结构以及输入输出)

编程入门 行业动态 更新时间:2024-10-04 17:28:44

JAVA基础学习——Day4(switch<a href=https://www.elefans.com/category/jswz/34/1762439.html style=分支和循环结构以及输入输出)"/>

JAVA基础学习——Day4(switch分支和循环结构以及输入输出)

一. Day3复习回顾

1. 三目运算符:简化分支的取值表达式

A. 格式:布尔表达式1?取值1:取值2

B. 规则,首先计算布尔表达式1的值,为true则计算并返回取值1,为false则计算并返回取值2的值

C. 注意1:三目运算符的类型对齐问题:取值1和取值2的类型必须一致,若不一致,则隐式提升为一致

例如:

int a = 10;

double b = 20.1;

int max = a > b? a : b; //报错,b是double,a是int,隐式提升为double

double max = a > b?a : b;//正确,max是double类型,可以接收double类型

D. 注意2:三目运算符,如果布尔表达式为true,则不会计算表达式3的值;如果布尔表达式为false,则不会计算表达式2的值

E. 注释3:三目运算符的返回值必须被接收,不能单独存在三目运算符

例如:

a > b? a : b;//报错,单独存在

int max = a > b? a : b;//被max变量接收 

System.out.println(a > b? a : b);//被打印函数接收

2. 

 3. 重点题整理(4.1板书中)

10.12

 解析:

A:new是关键字 B:可以 C: 不能以数字开头 D:.不是合法的标识符

原理:标识符是由_,数字,字母,以及$组成,其中不能以数字开头。美元符可以使用但是不推荐使用,应当避免使用。

解析:AB:java程序编译过后是*.class文件,这个文件是字节码文件(byte code)

C. java程序编译使用javac命令,java程序的解释和运行是java命令,java命令本质是启动JVM运行java程序(解释一句,执行一句) 

10.3

解析:大类型转为小类型会发生精度丢失问题

A. 10是int类型字面量,int小于float,不丢失

B. 8846.0是double类型字面量,强制转换为int类型,有精度丢失

C. byte小于int类型字面量,因此自动提升,不丢失

D. 100是int类型,int小于double,不丢失

 

 

解析:short是2byte类型,上限是2^15-1能够存储下128,因此变量a的值为128。

short存储128: 0000 0000 1000 0000

 byte存储128:1000 0000.最高位变为符号位是负数,则为补码,补码为-0的真值为-128(人为规定:原码为-0的真值为数据类型范围之内的最小值即为-128)

解析:

A. 正确的,boolean不能跟其他数据类型转换或者提升

B. 130 > 127不在byte的表示范围内,因此赋值给byte类型的时候会报错。3.5是double类型字面量,赋值给小于double的float类型需要强制类型转换

C.   a是int类型,b是byte类型,a大于b,因此赋值给b的时候需要强制类型转换才能行。而此处未强制类型转换,因此报错

10.14

解析:

知识点1:自增运算符分为前置++和后置++
前置:先计算,再取值(++在前就是先加)

后置:先取值,再计算 (++在后就是后加)

知识点2:x是double类型,y是int类型,两个进行除法运算发生类型提升,提升为double类型,因此结果为0.4

增量运算符:java中不存在无符号左移,因此没有<<<=

补充的几个增量运算符:

<<=: a <<= 1 等价于a = a<<1 

>>>=: a >>>= 1 等价于a = a>>>1(注意:>>>是无符号右移) 

>>= : a >>= 1 等价于a = a>>1 

 二. switch分支结构

1. 语法:

2. 执行过程:

A. 先计算switch表达式的值

B. 和内部的多个case语句进行匹配,一旦发现匹配的值,则进入该分支,从该分支开始依次向下执行,知道遇到break语句或者执行到最后

C. 当表达式的值没有任何case语句与之匹配,执行default语句 

3. switch实例(case情况为周一到周天)

 

 4. 上述实例变种

 注意1:switch的表达式不支持布尔表达式形式,只支持一个变量。因此switch分支能实现的if...else分支一定能实现,反之不一定

 注意2:善用break语句和switch制造多重选择或者单路线选择

注意3:这里的seer的错误打印只是改变了打印的字的颜色而已

三. 循环结构

1. while循环

A. 应用场景:大部分都是不知道具体的循环次数,但是知道循环终止条件,使用while循环

B. 语法规则:

while(循环满足的条件-布尔表达式){

        //循环语句

}

C. 执行:当布尔表达式为true,就执行循环体语句,否则结束循环

D. while循环实例 

a. 打印1-10的数字

b.  计算1-100的数字和

c. 计算5!

 d. 计算1!+2!+3!+4!+5!

 注意1:循环嵌套使得代码的复杂度上升,可以使用函数来使得逻辑更加清晰(后面讲)

注意2:要注意循环终止的条件,不要忘记更新循环终止的条件进而造成死循环。错误实例如下

 注意3:while循环的一个坑

 2. 循环中的break和continue

A. break: 跳出当前循环,执行这个循环之后的代码

例子:找到100-200中第一个三的倍数

B. continue: 结束本轮循环,进入下一轮循环(跳到一下轮的条件判断然后往后执行)

例子:找到100-200之间所有3的倍数

 注意:break和continue只针对一个循环。也就是break只能跳出一个当前循环。continue也只能针对一个循环。如果要跳出多个循环,则使用标签或者函数的return语句(用处比较少)

3. for循环

A. 语法:

for(表达式1;表达式2;表达式3){

        //循环体代码4

}

表达式1:用于初始化循环体变量

表达式2:循环条件,满足条件,进入循环体

表达式3:循环变量的更新条件(为了跳出循环)

B. 执行顺序:1 2 4 3-> 2 4 3->2 4 3->当2为false时候,循环结束

C. 应用场景:一般来说打印次数很清晰的时候用for循环

D. for循环实例

a. 打印1-10的数字

注意:表达式1,2,3都可以不在for循环的圆括号内写,可以以其他方式写(下面是实例以打印数字1-10的代码为例)

 

 注意:看一个变量生命周期以大括号为标准。如上图中的变量i如果写在for循环的括号内,则随着循环的结束而销毁,如果变量i写在main之下,for循环之外,则该变量i在main运行结束后被销毁

b. 计算1-100的和

注意:for循环的快速生成快捷键fori 

c. 计算5!

d. 计算1!+2!+3!+4!+5!

 

 补充知识:break和continue都只是针对当前一层循环,若多层循环时,一般搭配方法return语句或者使用标签(应用不太多)

函数的return语句

 标签方法:

反例如下

 4. do while循环

 四. 输入输出

1. java中的输出

A. 标准输出: System.out.println();

(传入任何数值):打印之后默认换行

(不传入任何数值):直接换行 

 B. System.out.print(传入任何数值); 

打印之后不换行

注意:必须传入数值,如果不传入数值则报错

 C. 格式化输出:System.out.printf();

 格式化表格:4_2板书中

注意:快捷键为souf

2. 输入

A. 系统输入:从键盘中读取内容(读取一个数值)

使用Scanner类

从键盘读取字符串,正数,浮点数 

B. 多次读取(搭配while循环)

例子:从键盘读取N个数值,求平均值

 

 C. java中获取一个随机数

更多推荐

JAVA基础学习——Day4(switch分支和循环结构以及输入输出)

本文发布于:2024-02-14 05:39:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1762119.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分支   输入输出   结构   基础   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!