java基础复习(四)
---恢复内容开始---
一、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的值是多少?
练习:
- 用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的值是多少?
练习:
- 用for循环计算1-10的 积(也就是 10的阶乘)
二、嵌套循环
循环嵌套 循环里面还有循环,可以嵌套多层,不同的循环结构相互之间也可以嵌套。
把循环里面的代码理解成一段普通的代码。
练习: 在控制台打印 5行*,每行5个星 *****
- 写上相同的5个 System.out.println(“*****”);
- 优化上面的代码,使用一个执行5次的循环,循环主体:System.out.println(“*****”)
- 希望一个一个的打印*(想想在控制台怎么实现单个打印*)
- 使用循环优化上面的代码
建议实际开发中不要嵌套太深
初学者而言,先学会从简单的代码优化开始(真正的理解到循环的作用,和语法)
练习:
在控制台打印如下的效果
①
*
**
***
****
*****
②
*****
****
***
**
*
③
*
**
***
****
*****
④
*
* *
* * *
* * * *
* * * * *
练习:
- 求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-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基础复习(四)的更多相关文章
- Java基础复习(四)
1.Integer与int的区别 int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默 ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- 《Java基础复习》-控制执行流程
最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...
- 《Java基础复习》—常识与入门
突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...
- Java基础复习之数组
Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...
随机推荐
- Mysql中主键与索引
摘自: https://www.cnblogs.com/wicub/p/5898286.html 一.什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没 ...
- Deepin 系统安装并配置PHP开发环境
Deepin是由武汉深之度科技有限公司开发的Linux发行版.Deepin团队基于Qt/C++(用于前端)和Go(用于后端)开发了的全新深度桌面环境(DDE),以及音乐播放器,视频播放器,软件中心等一 ...
- 《JavaScript 高级程序设计》
第 3 章 基本概念 3.5.2 位操作符 ECMAScript 中所有数值都是以 IEEE-754 64 位格式存储,但位操作符并不直接操作 64 位的值.而是先将 64 位的值转换成 32 位的整 ...
- Tensorflow创建和读取17flowers数据集
http://blog.csdn.net/sinat_16823063/article/details/53946549 Tensorflow创建和读取17flowers数据集 标签: tensorf ...
- WPF与DevExpress之——实现类似于安装程序下一步下一步的样式窗体
话不多说先上图 点击下一步 跳转到第二页 项目准备: 1.DevExpress 19/18/17(三个版本都可以) 2.Vs2019 3..Net framework>4.0 项目结构: ...
- 【python+selenium自动化】图像识别技术在UI自动化测试中的实际运用
引言: 目前在图像识别方面的自动化测试框架有很多,其中比较有名的是airtest,主要做手机端的游戏自动化测试(http://airtest.netease.com/) 因为没有实际把airtest运 ...
- python基础数据类型补充以及编码的进阶
一.基本数据类型的补充循环列表改变列表大小的问题#请把列表中索引为基数的元素写出l1=[1,2,3,4,5,6]for i in l1: if i%2!=0: print(i)结果:135二:基本数据 ...
- Trailing Zeroes (III) LightOJ - 1138 不找规律-理智推断-二分
其实有几个尾零代表10的几次方但是10=2*510^n=2^n*5^n2增长的远比5快,所以只用考虑N!中有几个5就行了 代码看别人的: https://blog.csdn.net/qq_422797 ...
- C语言第七周作业
每个单词的最后一个字母改成大写 函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写.(这里的"单词"是指由空格隔开的字符串). 函数接口定义: void fun( ...
- HIbernate入门3
HIbernate的一对多操作: 1. 创建实体类:一个Customer类(客户类)和一个LinkMan类(联系人),两者的关系为:一个客户中可能有多个联系人(关于一对多的实体类之间的关联,不做详细介 ...