------- android培训、java培训、期待与您交流! ----------
Java开发编程基础-3
1.循环结构概述和for语句的格式及其使用
* A:循环结构的分类
*for,while,do...while
* B:循环结构for语句的格式:
for(初始化表达式;条件表达式;循环后的操作表达式) {
循环体;
}
* C执行流程:
*a:执行初始化语句
*b:执行判断条件语句,看其返回值是true还是false
*如果是true,就继续执行
*如果是false,就结束循环
*c:执行循环体语句;
*d:执行循环后的操作表达式
*e:回到B继续。
* 在控制台输出10次"helloworld"
for(int i = 1;i <= 10 ;i++ ) {
System.out.println("helloworld");
}
2.循环结构for语句的练习之求和思想
* B:学生练习
*需求:求出1-100之间偶数和 //if(i%2=0) 或 for (int i = 0;i<= 100 ;i+=2 )
*需求:求出1-100之间奇数和 //if(i%2 !=0) 或 for (int i = 1;i<= 100 ;i+=2 )
3.循环结构for语句的练习之水仙花
* 需求:在控制台输出所有的”水仙花数”
*所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 100--999
*举例:153就是一个水仙花数。
*153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
分析:
1,100- 999
2,获取每一个位数的值,百位,十位,个位
3,判断各个位上的立方和是否等于这个数,如果等于打印
class Test3_Flower {
publicstatic void main(String[] args) {
for(int i = 100;i <= 999 ;i++ ) { //获取100到999之间的数
intge = i % 10; //123 % 10
intshi = i / 10 % 10; //12% 10;
intbai = i / 10 / 10 % 10; //1 % 10
if(ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
System.out.println(i);
}
}
} }
4循环结构for语句的练习之统计思想
* 需求:统计”水仙花数”共有多少个
if语句中加入count++;
5.循环结构while语句的格式和基本使用
* while循环的基本格式:
while(判断条件语句) {
循环体语句;
}
完整格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
* B:执行流程:
*a:执行初始化语句
*b:执行判断条件语句,看其返回值是true还是false
*如果是true,就继续执行
*如果是false,就结束循环
*c:执行循环体语句;
*d:执行控制条件语句
*e:回到B继续。
6.循环结构while语句的练习
* 统计”水仙花数”共有多少个
intcount = 0; //计数器
inti = 100;
while(i <= 999) {
intge = i % 10;
intshi = i / 10 % 10;
intbai = i / 100;
if(i == ge * ge * ge + shi * shi * shi + bai * bai * bai) {
count++;
}
i++;
}
System.out.println("count=" + count);
7.循环结构do...while语句的格式和基本使用
* A:循环结构do...while语句的格式:
初始化语句;
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
* B:执行流程:
*a:执行初始化语句
*b:执行循环体语句;
*c:执行控制条件语句
*d:执行判断条件语句,看其返回值是true还是false
*如果是true,就继续执行
*如果是false,就结束循环
*e:回到b继续。
* C:案例演示
*需求:请在控制台输出数据1-10
8.循环结构三种循环语句的区别
* 三种循环语句的区别:
*do...while循环至少执行一次循环体。
*而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
* for循环和while循环的区别:
* for语句执行完后,变量就会被释放,不能在使用;while语句执行完后,初始化变量还可以继续使用
* A:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用谁就用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。
9.循环结构注意事项之死循环
* A:一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
* B:两种最简单的死循环格式
*while(true){...}
*for(;;){...}
10.循环结构循环嵌套输出4行5列的星星
* 需求:请输出一个4行5列的星星(*)图案。
如图: *****
*****
*****
*****
注意:
System.out.println("*");和System.out.print("*");的区别
println 输入后直接换行,因为ln为换行
print输入后不会换行
* B:结论:
*外循环控制行数,内循环控制列数
for (int i = 1;i <= 4;i++ ) { //外循环决定的是行数
for(int j = 1;j <= 5 ;j++ ) { //内循环决定的是列数
System.out.print("*");
}
System.out.println()
11.循环结构循环嵌套输出正三角形
* 需求:请输出下列的形状
*
**
***
****
*****
上面内循环中改为j<=i;就可以了
12.循环结构九九乘法表
* 需求:在控制台输出九九乘法表。
*将上面对应的语句改为System.out.print(j+ "*" + i + "=" + (i * j) + "\t" );就可以了
* B:代码优化
注意:
'\x'x表示任意,\是转义符号,这种做法叫转移字符。
'\t' tab键的位置
'\r' 回车
'\n' 换行
'\"' 在输出语句中打印双引号
'\''
13.控制跳转语句break语句 loop的意思是循环
* A:break的使用场景
*只能在switch和循环中 作用是: 跳出整个循环
14.控制跳转语句continue语句
* A:continue的使用场景
*只能在循环中 作用是:终止本次循环,结束整个循环体,之后执行循环后的操作表达式(继续下次循环)
15.控制跳转语句标号
* 标号:标记某个循环对其控制
* 标号组成规则:其实就是合法的标识符
outer: for (int i = 1;i <= 10 ;i++ ) { //a(outer)就是标号,只要是合法的标识符即可
System.out.println("i= " + i);
inner:for (int j = 1;j <= 10 ;j++ ) {
System.out.println("j= " + j);
breakouter; //终止外层循环 输出 i=1 j=1
去掉outer,只是终止内层循环 输出 i=1 j=1 i=2 j=2i=3 j=3 ....
}
}
System.out.println("大家好");
http://www.heima.com
System.out.println("才是真的好");
程序中写上这三行不会报错,因为http:相当于标号,//是注释,后面的不会执行
16.控制调整语句练习
* A:练习题
*
for(intx=1; x<=10; x++) {
if(x%3==0){
//在此处填写代码
}
System.out.println(“Java基础班”);
}
我想在控制台输出2次:“Java基础班“ //填break;
我想在控制台输出7次:“Java基础班“ //填continue;
我想在控制台输出13次:“Java基础班“ //填System.out.println(“Java基础班”);
17.控制跳转语句return语句
* A:return的作用
*返回
*其实它的作用不是结束循环的,而是结束整个方法的。
* return和break以及continue的区别?
*return是结束方法
*break是跳出循环
*continue是终止本次循环继续下次循环
18.方法概述和格式说明
* A:为什么要有方法
*提高代码的复用性
* B:什么是方法
*完成特定功能的代码块。
* C:方法的格式
*
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return返回值;
}
* D:方法的格式说明
*修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
*返回值类型:就是功能结果的数据类型。void ,int.... (void 没有返回值)
返回值完全取决于返回值类型!
*方法名:符合命名规则即可。方便我们的调用。
*参数:
*实际参数:就是实际参与运算的。
*形式参数;就是方法定义上的,用于接收实际参数的。
*参数类型:就是参数的数据类型
*参数名:就是变量名
*方法体语句:就是完成功能的代码。
*return:结束方法的。
*返回值:就是功能的结果,由return带给调用者。
19.方法之求和案例及其调用
* A:如何写一个方法
*1,明确返回值类型
*2,明确参数列表
20.方法的注意事项
* A:方法调用(有具体返回值)
*a:单独调用,一般来说没有意义,所以不推荐。//也就是说没有定义变量去接收返回值
*b:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作.//相当于直接在输出语句中调用
*c:赋值调用,推荐方案。
* B:案例演示
*a:方法不调用不执行
*b:方法与方法是平级关系,不能嵌套定义
*c:方法定义的时候参数之间用逗号隔开
*d:方法调用的时候不用在传递数据类型,直接给值就可以
*e:如果方法有明确的返回值,一定要有return带回一个值
21.方法的练习
* 需求:键盘录入两个数据,返回两个数中的较大值 return a > b ? a : b;
* 需求:键盘录入两个数据,比较两个数是否相等 return a==b; (布尔类型)
22.方法之输出星形及其调用
* B:方法调用:(无返回值,void)
*单独调用
*输出调用(错误)
*赋值调用(错误)
*代码见 Demo3_Method.java 文件
* 需求:根据键盘录入的行数和列数,在控制台输出星形
class Demo3_Method {
publicstatic void main(String[] args) {
Scannersc = new Scanner(System.in); //创建键盘录入对象
System.out.println("请输入行数:");
int row = sc.nextInt(); //将键盘录入的行数存储在row中
System.out.println("请输入列数:");
intcolumn = sc.nextInt(); //将键盘录入的列数存储在column中
//System.out.println(print(row,column));//错误: 此处不允许使用 '空' 类型,返回值是void的方法不能输出调用
//返回值是void的方法只能单独调用!!!!!!!!!
print(row,column);
}
publicstatic void print(int a,int b) {
for(int i = 1;i <= a ;i++ ) { //行数
for(int j = 1;j <= b ;j++ ) { //列数
System.out.print("*");
}
System.out.println();
}
//return; //如果返回值类型是void,return可以省略,即使省略系统也会默认给加上,形式是return;!!!!!
}
}
23.方法的练习
* 需求:根据键盘录入的数据输出对应的乘法表 //Test2_Method.java 文件
class Test2_Method {
publicstatic void main(String[] args) {
Scannersc = new Scanner(System.in); //创建键盘录入对象
System.out.println("请录入一个整数,范围在1-9之间");
intnum = sc.nextInt(); //将键盘录入的整数存储在num中
print99(num);
}
publicstatic void print99(int a) {
for(int i = 1;i <= a ;i++ ) { //行数
for(int j = 1;j <= i ;j++ ) { //列数
System.out.print(j+ "*" + i + "=" + (i * j) + "\t" );
}
System.out.println();
}
}
}
24.方法重载概述和基本使用
* 方法重载(overload):
*在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
*参数列表不同:(重载的分类) //二进制不能完全表示小数,只能无限接近
*A:参数个数不同
*B:参数类型不同
*C:参数的顺序不同(算重载,但是在开发中不用)
* 方法重载的求和案例
*2个整数
*3个整数
*4个整数 //求和时你需要记住每个方法的不同名字去调用,麻烦,所以三个方法名统一都定为add(),根据括号里的参数个数来区分不同的方法.
class Demo4_Overload { //overload重载
publicstatic void main(String[] args) {
doublesum1 = add(10,20.1);
System.out.println(sum1);
intsum2 = add(10,20,30);
System.out.println(sum2);
doublesum3 = add(12.3,13);
System.out.println(sum3);
}
publicstatic double add(int a,double b) {
returna + b;
}
publicstatic int add(int a,int b,int c) {
returna + b + c;
}
publicstatic double add(double a,int b) {
returna + b;
}
}