您的位置:首页 > 职场人生

黑马程序员_Java基础_语句函数_03

2014-01-14 22:26 323 查看
-------android培训java培训、期待与您交流!
----------

导读:if语句、switch语句、循环语句、嵌套for循环、函数、重载

1、if语句(判断结构)

三种形式

if( ){}

if( ){}else{} //单条语句

if( ){}else if(){}else{} //单条语句

if else结构的简写格式:
变量 = (条件表达式)?表达式1 :表达式2

三目运算符:

好处:可以简化if else代码。

弊端:因为是一个运算符,所以运算完必须要有一个结果。

条件表达式无论写成什么样子,只看最终的结构是否是true或者false

2、switch语句(选择结构)

switch(表达式) //表达式的值只接受四种类型:byte、short、int、char



case 取值1:执行语句1; break; //case是没有顺序的。也可以把default写在第一个的位置。但还是先执行case

case 取值2:执行语句2; break;

default :执行语句n; break;

//default在最后的话,最后的一个break可以省略。若default不在最后一个后面最好加 //上一个break; 如果不加break;会将语名执行到遇到的下一个break;或者 }结束



二种结束方式:break; 和 }
if和switch语句很像,具体什么情况下用哪个语句?

if除了能够判断数值还能判断区间(switch判断区间会很费劲),对于运算结果是boolean型的if能判断(switch不行),if语句的应用范围更广。

如果对具体数值进行判断,且数值不多,符合byte、short、int、char这四种类型(补充枚举类型的也可以),虽然这两个语句都可以使用,但建议用switch完成,因为switch的效率稍高。(用switch的话,所有的case都到了内存中。但用if else,多次判断, 执行的过程会比switch多一点。)

3、循环语句:

三种:

while( ){}
do{ }while();
for(初始化条件;循环体条件;循环后的条件 ){}

while:先判断条件,只有条件满足才执行循环体

do while:先执行循环体一次,再判断条件,条件满足再继续往后面执行。

简单一句话:do while:无论条件是否满足循环体至少执行一次

例:while(y < 3 ); {语句;}要特别注意,编译不会出错,{语句}做为单独的程序体而存在,while一直在执行y<3

变量除了在初始化后才能使用外,还有一个特点,作用域的问题

for(int x = 0; x<3; i++) {} System.out.println("x = "+x); 出错,x只在for的{}中有效,离开{ }后x就消失了(内存释放)

int y = 0; while(y<3) { y++ } System.out.println("y = "+y); 可以输出y

变量如果只是用于控制循环的次数,作为循环增量存在的话,用for比较合适。内存相对优化一些

for和while 可以互换。如果需要定义循环增量。用for更为合适。

总结:什么时候使用循环结构?
当要对某些语句执行很多次时,就使用循环结构。

int x = 1;

for(System.out.println("a"); x<3; System.out.println("c"))

//初始条件是一个执行语句的话就可以做为一个合法表达式存在。

//当多表达式存在时用逗号分隔开。初始化和循环后条件可以不写

{

System.out.println("d");

x++;

}

//结果为:adcdc

无限循环的最简单表现形式。

for( ; ; ){
} //对于for来说,条件表达式不写的话,默认为真

while(true){
}

循环注意:一定要明确哪些语句需要参与循环,哪些不需要

练习题:用for语句实现累加器和计数器

累加思想:(原理:通过变量记录住循环操作后的结果)(通过和循环的形式,进行累加的动作)

(1)一个数不断的变大,或者变小,又不断的记住这个结果(用sum,1~10的和)

(2)字符串的不断延长

计数器思想:(通过一个变量记录住数据的状态变化,也许通过循环完成)(加、减)

4、for的嵌套循环

for(int x = 0; x<3; x++)

{

for(int y = 0; y<4; y++ )

{

System.out.println("*");

}

System.out.println();//只有一个功能就是换行

}

//对于打印长方形:外循环控制的行数。内循环控制的是每一行的列数。也就是一行中元素的个数

//根据要打印的要求(行的变化情况),对于内层的嵌套可以通过辅助的变量改动初始变量,又可以改动循环条件,还可以通过外层的x的变化来表现自己的变化。

不是规律的规律:

尖朝上,可以改变条件。让条件随着外循环变化。尖朝下,可以改变初始化值,让初始化随着外循环变化。

输出九九乘法表的时候,用\t不用空格,可以使格式对齐

无限循环,可以在其中加入多条判断语句,用break; 决定什么时候跳出循环。break只跳出当前循环(内层循环)

想要跳谁就跳谁,用标号的形式,给for循环起一个名字,就可以了。标号只能用在循环上,给标号起名字的一种方式

w : for(int x = 1; x<=5; x++) {

q : for(int y = 1; y<=5; y++) {

System.out.println("x = "+x);

break w; //在这里跳出的就不仅仅是内层循环了,跳出的还有内层循环

}

}

continue:只能用于循环结构。继续循环。

特点:结束本次循环继续下一次和循环。continue后面的语句永远执行不到,从for开始再循环。

也可以使用标号

记住:

(1)break和continue语句的作用范围。离开作用范围是没有任何意义的。
(2)break和continue单独存在的时候,下面可以有任何语句,因为都执行不到

5、函数(概述)

定义:函数是定义在类中的具有特定功能的一小段独立程序,函数也称为方法。

return:用于结束函数。
返回值:该值会返回给调用者

一个运算获取不同数据的运算结果,代码出现了重复,为了提高代码的利用性,将代码进行抽取,将这个部分定义成一个独立的功能,方便日后的使用。java中功能的定义是通过函数来体现的

static int(int num) { return num*3+5 } public 可以省了,但是static 必须要写,因为静态的Main必须调用静态的方法

函数的特点:

函数可以将功能代码进行封装,提高了功能和代码的复用性;

函数只有被调用才会执行;

对于函数没有具体的返回值的情况,返回值类型用关键字void表示。那么该函数中的return语句在最后一行可以省略不写。写上也不算错(return;)

函数只能调用函数,不能在函数中定义函数。

函数只要放在类中,放上放下都行,没有顺序,但是无论放在哪,都从main开始执行。

6、函数(应用)

写程序最主要的就是实现功能,而java中实现功能的最小单位是函数,所以定义功能都把它定义到一个独立的函数中去,不要把代码都放在主函数中去。主函数的作用只有一个调用函数,看看函数的功能是否正确。

如何定义一个函数呢?

(1)既然函数是一个独立的功能,那么该功能的运算结果是什么先明确

(2)在明确在定义该功能的过程中是否需要未知的内容参与运算。

其实这两个功能就是在明确函数的定义。

(1)是在明确函数的返回值类型。

(2)明确函数的参数列表( 参数的类型和参数的个数)。(不确定的数都定义变量来存储)

if(a == b)

return true;

else //else可以省略不写

return false;

返回的不是一个真假值的话,可以这样写:return (a == b) ? true : false;

返回的是一个真假值的话,可以这样简化 return a == b;

定义函数的时候只要把相应的功能实现就行了,不要做过多的功能。至于处理的数据是打印还是赋值是主函数的事,不要在功能函数中帮主函数去做。

7、函数的重载

定义:在同一个类中,允许存在名称不同的类,只要参数的个数和参数的类型不同即可(注意1:参数是有顺序的 注意2:重载的参数的类型没有关系)
重载只和参数列表有关系
定义函数名,重点都在于体现函数的功能。功能一致所以定义的函数的名称都一致。这样就在类中出现了重载的形式。
什么时候用重载?

当定义的功能相同时,但参与运算的未知内容不同,那么这时就定义一个函数名称,以表示其功能,方便阅读。而通过参数列表的不同,来区分多个同名函数。

void show(int a; double b; double c)

double show (int x; double y; double z) 这个函数不允许和上一个函数在同一个给定的类中

-------android培训java培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: