第二天:复习if语句,扫描器,switch语句,循环语句
1.if语句---流程控制语句
if之前学的语句是顺序结构
1.1 单个if的语法结构
if(条件判断){
满足条件需要做的事情;
}
int a=11;
if(a>1){
System.out.println("成功");
}
单个if语句的缺点:单个if语句都是相互独立的,每一个单个的if语句他都会进行判断,会消耗cpu的执行时间,降低执行效率。
1.2 if.....else语法结构
if(条件判断){
满足条件需要做的事情;
}else{
不满足条件需要做的事情;
}
if....else存在的目的:
1.单个的if一次只能进行一个条件判断,而if....else一次可以同时进行两个条件判断
2.if....else执行效率比单个的if语句要高些(当if中条件满足时,else就不会再去消耗cpu的执行时间(也就是当if条件满足时,else不会执行了))
 
1.3 多重if语句
if(条件判断1){
满足条件1要做的事情;
}else if(条件判断2){
满足条件2要做的事情;
}...
else if(条件判断n){
满足条件n要做的事情;
}else{
不满足条件需要做的事情;
}
问题:多重if语句中的else能够省略吗?
在有返回值的方法中多重if的esle是不能省略的,其他情况可以省略
多重if语句当某个条件满足时,后面的条件就不会执行了
 
1.4 if语句的嵌套(if语句中写if语句)
 
2.扫描器(键盘录入)
作用:从键盘中自己手动输入数据,你需要什么数据你自己通过键盘直接输入即可。
使用扫描器的步骤:
1.导入扫描器
import java.util.Scanner;
2.生成扫描器对象
Scanner scanner = new Scanner(System.in);
3.接收键盘输入的数据
int a=scanner.nextInt();
 
例子:
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您的成绩");
int a=scanner.nextInt();
if(a>=90&&a<=100){
System.out.println("优秀");
}else if (a>=60&&a<=89){
System.out.println("及格");
}else{
System.out.println("不及格");
}
 
3.switch选择语句
语法结构
switch(变量){
case 变量值1:
变量等于变量值1时需要做的事情;
break;//退出整个程序
case 变量值2:
变量等于变量值3时需要做的事情;
break;
case 变量值3:
变量等于变量值3时需要做的事情;
break;
...
case 变量值n:
变量等于变量值n时需要做的事情;
default:
最终需要做的事情;
}
例子:
  System.out.println("请输入星期数:");
int a1=scanner.nextInt();
switch (a1){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("您输入的数据有错误,请重新输入");
switch注意细节:
1.每一个case代表的就是一种情况,case结束之后必须交break,否则会出现代码穿透现象。
2.变量的取值
在jdk1.5之前 只能取 byte short char int
jdk1.5 加了 枚举以及byte short char int的包装类
在jdk1.7加了 String
3.case后面的break不能省略,否则会出现代码穿透现象
4. default位置是否可以发生变化的,default可以在switch语句中的任意位置,也可以省略
注意:如果不是放在末尾,则要加break,否则也会出现代码穿透现象
5.switch什么时候结束?
1.碰到break
2.碰到 }
6.switch与多重if语句有什么样的区别?
多重if语句一般用于区间的判断,switch一般用于选择性判(变量对应具体的某一个值)
 
练习题:请从键盘输入月份(1-12)数字,打印出对应的季节?
 
扩展:求三个数字中的最大值?
//三个数求其中最大的数字
int a=11;
int b=22;
int c=33;
int max=a;//首先假设a为最大值
if (b>max){//如果b大于最大数 这时候最大值是a
max=b;//把b的值赋值给max
}
if (c>max){//c大于最大值 这时候最大值是b
max=c;//把c的值赋值给max
}
System.out.println("最大值:"+max);
 
4.循环语句
循环含义:反复做同一件事情 例如:围着操场跑10圈....
循环的三要素:1.变量的初始化,2.条件判断,3. 变量改变情况
 
4.1.while循环
语法结构:
1循环变量的初始化
while(2条件判断){
循环体;
循环变量的改变;
}
细节:循环变量的改变是避免死循环的发生
例子:int a=0;
while(a<10){
System.out.println("这是"+a);
a++;
}
练习题:求0-100的偶数
//求0-100的偶数
int i=0;
while(i<=100){
if (i%2==0){//求奇数的话就是i%2!=0就ok了
System.out.println("0-100的偶数有:"+i);
}
i++;
}
 
while循环结束之后,循环变量还能继续使用吗?答案:可以的
while循环的执行流程:
1. 循环变量的初始化---循环条件判断---循环体---循环变量的改变
2.循环条件判断---循环体---循环变量的改变
3.循环条件判断---循环体---循环变量的改变
.....直到循环结束
 
4.2do...while循环
1循环变量的初始化
do{
循环体;
3循环变量的改变;
}while(2条件判断);
 
do...while循环结束之后,循环变量还能继续使用吗?答:可以的
 
do while循环的执行流程:
1.循环变量的初始化----循环体-----循环变量的改变---循环条件的判断
2. 循环体-----循环变量的改变---循环条件的判断 * 3循环体-----循环变量的改变---循环条件的判断
...直到循环结束
 
dowhile跟while循环相比有一个明显的特点:
当初始化变量不满足条件时,循环体也会执行一次(先斩后奏)
 
4.3for循环
语法结构:
for(1.变量初始化,2.条件判断3.变量改变的情况){
循环体;
}
例子:for(int i=0;i<10;i++){
System.out.println("这是"+i);
}
for循环结束之后,循环变量还能继续使用吗?答:不可以的
因为for循环的循环变量的作用域(作用范围)是局部变量,循环变量的作用范围只在这一对{ }中有效。
注意:for循环的循环变量在循环结束之后,会被垃圾回收器自动回收。节省内存空间。
 
for循环 执行流程:
1.循环变量的初始化---循环条件判断-----循环体----变量的改变
2.循环条件判断-----循环体----变量的改变
3.循环条件判断-----循环体----变量的改变
...直到循环结束
 
while do..while for循环三者之间的区别:
1.while dowhile循环的循环变量在循环结束之后能够继续使用,而for循环在循环结束之后,循环变量被垃圾回收器自动清除了, 不能再继续使用.
2.while for循环必须满足条件才会执行循环体, 而dowhile循环就算不满足条件,也会执行一次循环体。
 
练习题
 //求10000-99999之间的回文数(例如12321就是一个回文数) (for  if求)  for循环里面嵌套if   条件;个位==万位&&十位==千位
int count=0;
for (int i = 10000; i <99999 ; i++) {
//先求出个位,十位和百位,千位,万位
int gw=i/1%10;
int sw=i/10%10;
int bw=i/100%10;
int qw=i/1000%10;
int ww=i/10000%10;
if (gw==ww&&sw==qw){
System.out.println("回文数:"+i);
}
}
 //求100-999的水仙花数 (例如:1*1*1+5*5*5+3*3*3=153 这就是一个水仙花数)条件:百位*百位*百位+十位*十位*十位+个位*个位*个位=百十个
for (int j = 100; j <1000 ; j++) {
//先求出个位,十位和百位
int gw=j/1%10;
int sw=j/10%10;
int bw=j/100%10;
//条件判断
if(gw*gw*gw+sw*sw*sw+bw*bw*bw==j){
System.out.println("水仙花数:"+j);
}
}
 //求1900-2021中的闰年 例如:year%4==0&&year%100!=0||year%400==0时,这个就是闰年
for (int year=1900;year<=2021;year++){
if(year%4==0&&year%100!=0||year%400==0){
System.out.println("闰年:"+year);
}
}
嵌套for循环(for循环里面嵌套for循环)
外循环和内循环之间有什么关系?
没执行一次外循环,内循环要执行完。
 练习题:打印九九乘法表
    //打印九九乘法表
//外层控制行数
for (int i = 1; i <=9 ; i++) {
//内层输出内容
for (int j = 1; j <=i ; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}

扩展知识:累加思想

习题:求0-100的总和

 1   //累加思想  例题:求1-100的和
2 int sum=0;
3 for (int k = 1; k <=100 ; k++) {
4 sum+=k;//sum=sum+k 第一次: sum=0+1 第二次:sum=1 sum=1+2 第三次:sum=3 sum=3+3 以此类推....
5 }
6 System.out.println("sum="+sum);
7 double sum1=0;
8 for (int i = 1; i <=10 ; i++) {
9 sum1+=1.0/i;
10 // sum1=sum1+1.0/i;
11 }
12 System.out.println("sum1="+sum1);

综合练习:在控制台循环输入五个学生的成绩,求其最大值,最小值和总和?

 1  //循环输入5个学生的成绩,求其最大值,最小值以及总成绩?
2 int max=0;
3 int min=100;
4 int sum=0;
5 Scanner sc = new Scanner(System.in);
6 for (int i = 1; i <=5 ; i++) {
7 System.out.println("请输入第"+i+"个学生成绩:");
8 int j = sc.nextInt();
9 if (max<j){
10 max=j;
11 }
12 if (j<min){
13 min=j;
14 }
15 sum+=j;
16 }
17 System.out.println("最大值:"+max);
18 System.out.println("最小值:"+min);
19 System.out.println("sum="+sum);
5.随机器:Random
作用:用来产生随机数的
如何使用随机器产生随机数(三个步骤)
1.导入随机器
import java.util.Random;
2.生成随机器对象
Random rd=new Random();
//程序中真正用到随机器 rd
3.产生随机数
int a=rd.nextInt();
 
学习感受:今天是复习JavaSE的第二天,JavaSE基础部分我打算复习15天左右的时间,学习Java技术这条路真的很难很累,学的内容很多,尤其是你只有一个人之间学习的时候,如果你能找到能跟你志同道合和一起学习java的小伙伴那是极好的,可以跟小伙伴再一起学习,交流,分享心得等等......希望自己不要方向这条路,既然自己选择了这条路,就要坚定的走下去,那怕头破血流,当然这说的有些夸张,但是这种决心还是要有的,毕竟是自己选择的。走出来选择就去坚持把,加油!!!一起去学Java的小伙伴。最后想送一句我很喜欢的名言:路漫漫其修远兮,吾将上下而求索。
 

JavaSE复习巩固的更多相关文章

  1. javaSE复习之——线程

    线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...

  2. JavaSE复习日记 : 算是个小前言吧

    /* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...

  3. javaSE复习总结

    之前匆匆忙忙学完了java,后来又接着学习ee,然而,越是想要快一点最后反而会更慢一点.因为匆忙间 我几乎什么都没学会.在后面的学习中实在非常吃力.就把javase 的视频大部分又重新看了一遍.真的收 ...

  4. JavaSE复习总结之集合(Collection)

    Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...

  5. JavaSE复习_8 泛型程序设计

    今晚看了core Java的泛型部分,万万没有想到,当时看培训班视频入门的一带而过的泛型,有这样多的细节,整理了一下书里面提到的一些自认为的重点,方便以后观阅.由于是复习,一些基础知识跳过. △泛型类 ...

  6. JavaSE复习日记 : 方法的调用和方法的重载

    /* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...

  7. JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)

    最近没网,但攒了几天的博客,这次逮到机会发博客,直接三篇走起; /* * 循环终止语句: break/ break outerFor/ continue */ /* * break语句 * 1. 用于 ...

  8. JavaSE复习日记 : 接口

    /* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...

  9. JavaSE复习日记 : 抽象类

    /* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...

随机推荐

  1. 二、Ansible基础之模块篇

    目录 1. Ansible Ad-Hoc 命令 1.1 命令格式 1.2 模块类型 1.3 联机帮助 1.3.1 常用帮助参数 1.4 常用模块 1.4.1 command & shell 模 ...

  2. 4.7 80--删除排序数组中的重复项 II

    因为python的list可以直接del List[index],因此直接使用了暴力方法,判断是否重复了两次,是的话直接使用del. 在转向使用Java时,因为暴力方法的局限,一直在找怎样对Java的 ...

  3. [技术博客]WEB实现划词右键操作

    [技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...

  4. 问题:两个对象值相同(x.equals(y) == true),但是可能存在hashCode不同吗?

    面试官的考察点 这道题仍然是考察JVM层面的基本知识,面试官认为,基本功扎实,才能写出健壮性和稳定性很高的代码. 涉及到的技术知识 (x.equals(y)==true),这段代码,看起来非常简单,但 ...

  5. pyinstaller和wordcloud和jieba的使用案列

    一.pyinstaller库 1.简介 pyinstaller库:将脚本程序转变为可执行(.exe)格式的第三方库 注意:需要在.py文件所在目录进行以下命令,图标扩展名是.ico 2.格式: pyi ...

  6. 大厂面试题系列:重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分

    面试题:重载(Overload)和重写(Override)的区别.重载的方法能否根据返回类型进行区分 面试官考察点猜想 这道题纯粹只是考查基础理论知识,对实际开发工作中没有太多的指导意义,毕竟编辑器都 ...

  7. Python基础——数据类型——字符串

    整数.浮点数.布尔值的用法大同小异,而Python字符串的一些用法不易记住,这里以廖雪峰教程为基础,进行一些思考和复习总结. 字符串是什么? 以单引号'或者双引号"括起来的任意文本,比如:& ...

  8. Spring MVC:DispatchServlet类

    Spring MVC架构 Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就已包含在Spring框架中.传统的模型层被拆分为了业务层(Service)和数据访问层 ...

  9. 好好的 Tair 排行榜不用,非得自己写?20 行代码实现高性能排行榜

    TairZset 是阿里云自研的可实现任意维度 double 类型的分值排序的数据结构,借助 Tair 客户端同时可实现扩展性,即可以将计算任务分布至多个数据节点完成,实现分布式排行榜能力.本文介绍了 ...

  10. 线程私有数据TSD——一键多值技术,线程同步中的互斥锁和条件变量

    一:线程私有数据: 线程是轻量级进程,进程在fork()之后,子进程不继承父进程的锁和警告,别的基本上都会继承,而vfork()与fork()不同的地方在于vfork()之后的进程会共享父进程的地址空 ...