---恢复内容开始---

一、for循环的掌握

   语法格式:

for( 初始化语句A   ;  条件判断B  ;  循环后功能语句C){

//循环体D

}

  for的执行流程:

    整个for循环结构中的  A 只会执行一次

    循环第一次:Aà B(true)àDàC

  第二次:      B(true)àDàC

  第三次:      B(true)àDàC

   …

   第n次:        B(false)  结束整个循环

  

  • 举个例子演示一下,for 打印 1-10
  •   

    1) 回顾下学过的while循环示例

       

    2) 用for循环实现同样的功能

    3) 注意定义的计数器i的作用域

for 常见面试题  

    

  1)

     上面的代码打印的值?

   循环了几次?

     判断了几次?

     最后i的值是多少?

  2)

    上面的代码打印的值?

     循环了几次?

    判断了几次?

    最后i的值是多少?

  练习

    1. 用for循环计算1-10的 积(也就是 10的阶乘)

      

二、嵌套循环 

  循环嵌套  循环里面还有循环,可以嵌套多层,不同的循环结构相互之间也可以嵌套。

  把循环里面的代码理解成一段普通的代码。

  练习: 在控制台打印 5行*,每行5个星 *****

---恢复内容结束---

一、for循环的掌握

   语法格式:

for( 初始化语句A   ;  条件判断B  ;  循环后功能语句C){

//循环体D

}

  for的执行流程:

    整个for循环结构中的  A 只会执行一次

    循环第一次:Aà B(true)àDàC

  第二次:      B(true)àDàC

  第三次:      B(true)àDàC

   …

   第n次:        B(false)  结束整个循环

  

  • 举个例子演示一下,for 打印 1-10
  •   

    1) 回顾下学过的while循环示例

       

    2) 用for循环实现同样的功能

    3) 注意定义的计数器i的作用域

for 常见面试题  

    

  1)

     上面的代码打印的值?

   循环了几次?

     判断了几次?

     最后i的值是多少?

  2)

    上面的代码打印的值?

     循环了几次?

    判断了几次?

    最后i的值是多少?

  练习

    1. 用for循环计算1-10的 积(也就是 10的阶乘)

      

二、嵌套循环 

  循环嵌套  循环里面还有循环,可以嵌套多层,不同的循环结构相互之间也可以嵌套。

  把循环里面的代码理解成一段普通的代码。

  练习: 在控制台打印 5行*,每行5个星 *****

  1. 写上相同的5个  System.out.println(“*****”);
  2. 优化上面的代码,使用一个执行5次的循环,循环主体:System.out.println(“*****”)
  3. 希望一个一个的打印*(想想在控制台怎么实现单个打印*)
  4. 使用循环优化上面的代码

建议实际开发中不要嵌套太深

初学者而言,先学会从简单的代码优化开始(真正的理解到循环的作用,和语法)

练习:

在控制台打印如下的效果

*

**

***

****

*****

*****

****

***

**

*

*

**

***

****

*****

*

* *

* * *

* * * *

* * * * *

PrintStar

练习

  1. 求1-5的 的阶乘和(1!+2!+3!+4!+5!)
package com.javaBase;

public class Factorial {
int ji = 1;
int sum = 0;
public static void main(String[] args) {
Factorial factorial = new Factorial();
factorial.printFactorial();
}
public Integer printFactorial(){
for (int i=1;i<=5;i++){
ji *= i;
System.out.println(ji);
sum +=ji;
}
System.out.println(sum);
return sum;
}
}

Factorial

三、循环控制语句

1. break

l break  表示终止   当前 这一层循环

示例:

1) 循环10次,打印计数器i的值

2) 假设当遇到i的值是3的时候,终止整个循环

3) 每一次循环,都应该判断的值是否是3,如果是,执行一个break;

u 怎么测试终止 当前这一层 ?

使用嵌套循环测试

  • 给循环添加标签(名字)

语法:用break 名字

结束当前这一层的循环结构(标签名字必须符合Java中标识符的命名规则)

练习

1) 求出100以内前5个2的倍数的数字

//循环1-100

int n = 0;

for(int i=1;i<=100;i++){

if(i%2==0){

//打印

n++;

}

if(n==5){

break;

}

}

2. continue

l continue  跳过本次循环,继续下一次循环

场景:

一周每天重复做的事情就是 :打代码

但是第5天不想打代码,第6 和第7天仍然继续打代码,怎么实现?

练习

1) 计算出1—20之间所有不能被3整除的整数的总和  大于(或等于)100的第一个数字

for(){

判断不能被3整除 ,求总和sum

if( i %3  != 0 ){

sum+=i;

}

再有一个判断sum大于(或等于)100   用break 终止循环

if(sum>=100){

//打印sum    i

break;

}

}

3. return

l return  表示结束当前的方法

  • 使用刚才break的例子,修改为return 看看有什么区别

注意:break  continue  return  紧跟的后面不能够有其它的代码,因为永远执行不到

package com.javaBase;

import java.sql.SQLOutput;

public class LoopController {
public static void main(String[] args) {
LoopController loopController = new LoopController();
//loopController.breakController();
//loopController.continueController1();
//loopController.continueController2();
loopController.returnController();
}
/**
* 1)求出100以内前5个2的倍数的数字
*/
//循环1-100
int n=0;
public void breakController(){
for (int i=1;i<=100;i++){
if (i%2==0){
n++;
System.out.println(n);
}
if (n==5){
break;
}
}
}
/**
* continue 跳过本次循环,继续下一次循环
* 场景:
* 一周每天重复做的事情就是 :打代码
* 但是第5天不想打代码,第6 和第7天仍然继续打代码,怎么实现?
*/
public void continueController1(){
for (int i = 1;i<=7;i++){
if (i==5){
continue;//跳出这次循环
}
System.out.println(i+"写代码");
}
}
/**
* 1)计算出1—20之间所有不能被3整除的整数的总和
* 大于(或等于)100的第一个数字
*/
public void continueController2(){
int j=0;
for (int i = 1;i<=20;i++){
if (i%3 !=0){
j += i;//跳出这次循环 }else {
continue;
}
if (j>=100){
break;
}else {
System.out.println(j);
}
}
}
/**
* return 表示结束当前的方法
* 使用刚才break的例子,修改为return 看看有什么区别
*/
public void returnController(){
int j=0;
for (int i = 1;i<=5;i++){
if (i==3){
return;
}
System.out.println(i);
}
System.out.println("方法结束");
}
}

loopController

四、总结三种循环语句

3种循环结构的语法

while(条件){

执行这里面的内容

}

do{

}while(条件)

for(初始值;判断条件;循环后执行语句){

循环体里面做的事情

}

  1. 循环真正作用
  2. 目前而言,需要熟练的使用每一种循环完成基本的操

六、引入

  思考:我们第一次听说方法是什么时候?

  示例:

  设计一段代码,计算1-10的和(举例代码演示)

  我们还有个需求,计算1-1000的和,怎么做?

  比较上面的代码区别,都比较类似,唯一不同的地方是在哪里?

  

  希望设计一段代码,能够同时满足求1-n的和,怎么办?

    我们可以用  方法  来解决

图示如下:

  1. 什么是方法   

    方法,也叫 函数,但是一般在java中都叫 方法(同学们在其他地方看到 函数 ,它其实就是指 方法)。

    方式   就是一个能够独立完成某个功能的一段代码。

    方法  看成是一个整体,比如这个圈,既然可以看成一个整体,那么我们这个圈里是不是可以包含 1-n 的求和的代码

          

  

  2. 怎么设计 

    需求:设计一个方法,完成计算任意两个整数的和的功能!

    1) 拷贝一个主方法,然后修改   

    2) 完成此方法的功能

      我们就是此方法的设计者,设计这个方法需要哪些步骤呢?

      我们需要做什么事情?(计算任意两个整数的和)

      计算哪两个数?

        定义两个变量准备用来接收使用者给我的两个整数

        这两个变量定义在方法的()中

        我们在设计的时候,两个变量是没有具体数据的,我们可以当成这两个变量是有数据的

  3. 定义语法

修饰符  返回类型 方法名字(数据类型  变量名,数据类型 变量名,……){

在方法的代码块区域返回结果值的语法: return  返回和方法返回类型相同的值;

}

    方法的 返回类型 和 方法名字 必须定义

    在一个类中不能 同时存在  相同名字 和 参数类型个数一模一样  的方法

    jvm是怎么来判断 相同名字 和参数类型的方法?--》

    方法签名:方法名+参数列表(和参数的名字没有关系,只是和参数的类型 ,个数,顺序有关)

  4.怎么使用

    上面计算2个数的和的方法怎么调用?在哪里调用?

    主方法:是程序的入口,放在主方法里,jvm可以间接的调用我们定义的方法。

    使用(调用)方法,我们现在是使用者,对于使用者而言,不用关心方法内部是如何计算的(应该把方法看成一个整体)

      方法有static修饰    : 类名.方法名()

      方法没有static修饰: 对象名.方法名()--(后面面向对象讲解)

      如果调用的方法和被调用的方法同时在一个类中,并且同时有static 或者同时没有static:

      方法名()

       方法被调用的时候才会执行

      

      可以重复的调用执行(多次调用相互之间没有关系,各自调用各自的)

   5.常见问题

    1) 调用的时候参数不一致

    

    2) static main 方法调用一个非static方法

    3) 直接写方法名add没有括号和参数;

    

    

     

   6.总结  

    在一个类中,用static修饰的方法只能调用 同样是static修饰的方法

    实参列表 和 形参参数个数和类型必须一一对应。

    在一个类中不能定义一样的名字 和 相同形参类型和个数 的方法。

    把一个方法看成是能够独立完成某个功能的一段代码,把一个方法看成是一个整体

    从两方面去看:

    1) 使用者

      a) 不用关心方法内部的代码是如何写

      b) 如何使用(调用)

      c) 方法形式参数(所需要关心)

      d) 方法的执行结果

    2) 设计者

      a) 实现什么功能,要做什么事情

      b) 形式参数:用户在调用方法的时候传入什么已知条件

      c) 执行完毕的结果如何处理

  7.练习

    1) 定义一个方法,接受三个int参数,计算打印最大的一个数。

    

七、方法return

  1)  引入

    设计一个方法求任意两个整数的和,我们之前代码是怎么写的?

    在上面的方法基础之上,计算3个整数的和

      a) 使用这个方法,先计算两个的和sum,再调用一次,然后sum和另外一个数求和

        从代码上看,这个求和的方法只能够传入两个

      b) 希望上面的方法计算完毕之后不打印,得到计算之后的一个结果值。

        那我们可以用 return 来返回结果值…

  2)示例   

    要求:计算2个整数的和,然后把计算的结果返回给调用者。

    1) 方法里写上return 返回值(定义个sum变量存放求和的结果并返回)

      return  sum;//表示把sum变量中的值返回给调用者

    2) 修改返回类型

      方法的内部返回了一个数据,数据的类型是int,所以void 修改成 int

      注意:把sum变量中的值返回给调用者,不是返回sum这个变量

    3) 方法里面返回的变量sum 值,是否可以在调用的方法里面直接使用?

      方法里面的变量sum只能在所在方法里面才能访问,其他方法不能访问

    4) 怎么获得结果值?

       把add方法这个整体  看成是 此方法计算完毕的结果值

      a) 直接把  方法整体  放在打印语句中打印(把方法看成是整体)

      b) 可以定义一个变量接收 方法结果值

      c) 把方法整体看成是一个值,参与运算

     思考:直接打印 方法整体,还是  把方法结果值定义一个变量存起来再去打印 ,哪种方式更好一些?

    

     思考:计算1+3的和,直接每次计算的时候打印方法,还是单独定义一个变量接收起来 哪种方式更好;

  

  3) 常见问题

    ①定义了一个有返回类型的方法,但是调用的时候没有放在打印语句中

    例如:

     add(1,2);

        

     ②在调用方法的里面去打印输出 被调用方法里面的变量  

      add方法中定义的返回变量sum的值,这个sum局部变量 只能在add方法内部访问,而

      主方法中无法访问(作用域不同)

        

     ③没有返回任何东西,也就是返回类型为 void,去打印输出(或者使用变量接收)方法返回值

    

    

④定义了add(int x,int  y) 是有返回值的方法,但是调用的的方式有问题,例如

1)错误调用方式一

public static void main(String [] args){

add(1,2);

System.out.println(add(1,2));

/*

上面的代码什么问题? 多调用了一次,两次add(1,2) 调用了2次,是独立的调用了两次,第一次调用的时候可以使用一

个变量去接收,然后打印变量即可

*/

}

⑤错误调用方式二

public static void main(String [] args){

add(1,2);

System.out.println(add);

/*

上面的代码什么问题? 打印的是一个变量add,这个变量然而并没有定义,和方法名字搞混淆了

*/

}

    ⑥如果一个方法的返回类型不是void,那么要求(不管方法里面做了什么事情)都必须返回

    一个和 返回值类型匹配的值

public static int add(){

if(true){

return 1;

}

}

    上面的代码:编译器只看结构,不看其中的值,编译器看到的是一个if结构

public static int add(){

if(true){

return 1;

}else{

return 2;

}

}

上面的代码:编译器看到结构是if-else,始终都会执行一部分,而这2部分都有return

public static int add(){

if(true){

return 1;

}else if(false){

return 2;

}

}

  4)应用场景

    一般来说就是如果需要方法返回一个结果值,那么就return(一般做一些数学运算都需要使用返回值)

    设计一个方法:打印用户传入的字符串,思考是否需要返回值?

public static void print(String str){

System.out.println(str);

}

八、方法重载

  1)引入   

  • 定义一个add方法,求2个整数的和
  • 举例,定义不同方法,满足下面要求:

    2个整数和,3个整数和,4个整数的和…….

    

    这种方式不好,感觉不容易记住;方法名太多;-- 但是可以通过方法重载来修改上面的例子

  2)概念    

     方法重载:是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数列表(类型   个数  顺序)。

    如果一个类中存在了多个名字一样的方法而编译不报错,那么肯定就是重载

     重载理解:①方法名相同

    ②参数类型,参数个数,参数顺序 只要有一个不同

    注意:方法重载和参数名字没有关系。和 返回值类型 和 修饰符也没有关系。

  3)作用

    ①多个方法写成重载方法有什么好处?方便记忆

    ②典型的方法重载示例w(多个不同类型);

  4)应用场景  

    ava.io.PrintStream

    java.io.PrintStream包里面的println方法 ,方法名字都一样,参数类型不同

    

java基础复习(四)的更多相关文章

  1. Java基础复习(四)

    1.Integer与int的区别 int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默 ...

  2. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  3. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  4. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  5. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  6. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  7. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  8. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  9. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  10. Java基础复习之数组

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

随机推荐

  1. 如何将一个SpringBoot简便地打成一个war包(亲测有效)

    正常情况下SpringBoot项目是以jar包的形式,通过命令行: 来运行的,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问 ...

  2. Day3 02判定两个对象的引用是否相同

    C#中类型分为值类型和引用类型 清楚了他俩的区别,像验证下,如果在C++中,就可以通过指针直接看地址,但是C#中,找了一会儿没找到方法(主要是我技术比较菜). 不过,用根基类的ReferenceEqu ...

  3. a daemon 守护进程

    w Cron and Crontab usage and exampleshttps://www.pantz.org/software/cron/croninfo.html

  4. 自定义控件 - 流式布局:TagFlowLayout

    在项目中需要用到流式布局的样式,此文学习鸿洋大神的FlowLayout控件,学习使用一下.出自 http://blog.csdn.net/lmj623565791/article/details/38 ...

  5. 《HTML5 高级程序设计》

    第一章 HTML5 概述 开发 HTML5 的组织 Web Hypertext Application Technology Working Group (WHATWG):开发 HTML 和 Web ...

  6. Linux负载均衡实现

    配置之前清空所有服务器防火墙规则 iptables -F 关闭selinux: 1./usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开 ...

  7. spring boot 整合 RabbitMQ 错误

    1.错误 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.spr ...

  8. python笔记01(详情请看廖雪峰的官方网站)

    python 在调用函数的时候, 如果传入的参数数量不对, 如果传入的参数类型不对 会报TypeError的错误,并且Python会明确提示参数错误原因. hex()内置函数会把一个整数转换成十六进制 ...

  9. Android.应用软件.常用程序下载地址_20190913

    1. 1.1. 健康友行 微信 官网 https://weixin.qq.com/ 抖音 chrome 百度网盘(账号:osskill)中有 1.2. 支付宝 官网 https://mobile.al ...

  10. Echarts使用及动态加载图表数据

    Echarts使用及动态加载图表数据 官网:http://echarts.baidu.com/ 1.文档 2.实例 名词: 1.统计维度(说明数据) 维度就是统计致力于建立一个基于多方位统计(时间.地 ...