黑马程序员——Java语言基础下篇
------Java培训、Android培训、iOS培训、.Net培训 、期待与您交流! -------
3、循环结构:
循环结构:while、do-while、for
whilej结构: 定义初始化表达式; while (条件表达式){ 循环体; }
do-while结构 :定义初始化表达式; do{ 循环体; }while(条件表达式);
for结构: for(初始化表达式 ; 循环条件表达式 ; 循环后的操作表达式){ 循环体; }
对于for语句注意两点:
1)、是循环条件表达式一定要有真假,否则编译通不过;
2)、不管是初始化的表达式、循环操作后的表达式还是循环条件都可以是多个表达式,只需用' ,' 隔开就好。
while与do-while的区别:
1)、do-while无论条件是否满足,循环体至少执行一次;
2)、do-while 相对少用一点、while比较常见;
3)、do-while后面用;结束。
for与while的区别:
1)、变量都有自己的作用域、对于for来讲,如果变量的循环增量只为控制循环次数,那么该变量只在for语句中有效,for语句执行完毕,该变量释放。
2)、for与while可以进行互换,如果需要定义循环增量,for更优化一些。
循环结构的使用:当对某些语句执行很多次时,就使用循环结构。
无限循环表达式:(面试会考到)
1)、for( ; ; ){ }
2) 、while(true){ }
3) 、do{ }while(true);
累加 的 思想: 【原理】通过变量记录住每次变化的结果,通过循环的形式、进行累加的动作。 核心就是:变量+循环。
计数器的思想:【原理】通过一个变量记录住数据的变换状态,通过循环完成。 主要用于求解:求个数。
循环嵌套练习:
public class Forfor
{
/**
循环嵌套练习:打印输出
*****
****
***
**
*
*
**
***
****
*****
思想:
1、用外层循环循环控制行,共5行,定义变量i=0,循环条件:i<5;
2、用内层循环控制列即元素个数,除了第一行5个元素外,其余列的个数与行数相加要小于等于5,
定义j=0,j+i<5 ;
3、在每一行循环打印输出*;
4、一行输出结束换行。
*/
public static void main(String[] agrs){
for(int i=0;i<5;i++){
for(int j=0;i+j<5;j++){ //控制循环列的个数与行数相加小于等于5
System.out.print("*"); //在每一行上输出*
}
System.out.println(); //换行
}
for(int i=0;i<5;i++){
for(int j=0;j<=i;j++){ //控制循环列的个数小于行数
System.out.print("*"); //在每一行上输出*
}
System.out.println(); //换行
}
}
}
运行结果如下:
小结:不是规律的规律
1)、尖朝上,可以改变条件,让条件随着外循环变化;
2)、尖朝下,可以改变初始值,让初始值随着外循环变化。
九九乘法表的核心代码:
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+'\t'); //打印输出 i * j= i*j
}
System.out.println(); //换行
}
打印菱形的核心代码:
/**
3、打印输出:
____*
___* *
__* * *
_* * * *
*/
//上半个菱形
for(int i=0;i<5;i++){
for(int j=i;j<5;j++){ //控制输出_的个数 如果j=i+1从顶格开始输出
System.out.print(' ');
}
for(int k=0;k<=i;k++){ //控制输出*的个数
System.out.print("* ");
}
System.out.println(); //换行
}
//* * * * *
//中间一行
for(int i=0;i<=5;i++){ //控制最中间一行*个数
System.out.print("* ");
}
System.out.println();
/**
_* * * *
__* * *
___* *
____*
*/
//下半个菱形
for(int i=0;i<5;i++){
for(int j=0;j<=i;j++){ //控制输出_的个数 如果j=i+1从顶格开始输出
System.out.print(' ');
}
for(int k=i;k<5;k++){ //控制输出*的个数
System.out.print("* ");
}
System.out.println(); //换行
}
七、函数
1、函数的定义:函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法。
2、作用:为了提高代码的复用性,对重复代码进行抽去封装成一个独立的功能,方便日后使用。
3、函数的格式:
执行语句;
return 返回值;
返回值类型:函数运行后的结果的数据类型;参数类型:是形式参数的数据类型;;形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数;实际参数:传递给形式参数的具体数值;return:用于结束函数;返回值:该值会返回给调用者。
4、函数的特点:
1)、 定义函数可以将功能代码进行封装;
2)、 便于对该功能进行复用;
3)、函数只有被调用才会被执行;
4)、 函数的出现提高了代码的复用性;
5)、 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
特别注意:
• 函数中只能调用函数,不可以在函数内部定义函数。
• 定义函数时,函数的结果应该返回给调用者,交由调用者处理。
5、如何定义函数:
两个明确:1)、明确该功能的运算结果( 明确返回值类型);2)、明确在定义该功能的过程中是否需要未知的内容参与运算。( 明确函数的参数列表)。6、函数重载:
使用情况:当定义功能相同但是参与运算的内容不相同时,就定义同一个函数名称表示其功能,通过参数列表以示区分。注意:1)、重载和返回值类型没有关系。 //参数列表相同,返回值不相同的,在同一个类里面是不允许的。2)、参数列表不同。(包括个数不同和顺序不同)。
7、函数代码练习: (打印99乘法表和矩形)<span style="font-weight: normal;">public class FunctionDemo2{
public static void main(String[] agrs){
draw(5,6);
printhr();
M99();
}
/**
打印99乘法表
思路:1、返回值类型:void
2、参数列表:无
*/
public static void M99(){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i);
}
System.out.println();
}
}
/**
打印矩形*
思路:1、返回值类型:没有 void
2、参数列表 传入要打印的行数和列数
*/
public static void draw(int x,int y){
for (int i=0;i<x ;i++ )
{
for(int j=0;j<y;j++){
System.out.print("*");
}
System.out.println();
}
}
public static void printhr(){
System.out.println("---------------------------------------");
}
}</span>
<span style="font-weight: normal;">public class FunctionDemo2{
public static void main(String[] agrs){
draw(5,6);
printhr();
M99();
}
/**
打印99乘法表
思路:1、返回值类型:void
2、参数列表:无
*/
public static void M99(){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i);
}
System.out.println();
}
}
/**
打印矩形*
思路:1、返回值类型:没有 void
2、参数列表 传入要打印的行数和列数
*/
public static void draw(int x,int y){
for (int i=0;i<x ;i++ )
{
for(int j=0;j<y;j++){
System.out.print("*");
}
System.out.println();
}
}
public static void printhr(){
System.out.println("---------------------------------------");
}
}</span>