黑马程序员--java基础流程控制与方法(下)

——- android培训java培训、期待与您交流! ———-

while循环:
基本格式:
while(循环判断语句){
循环体
}
完整结构:
初始化语句
while(循环判断语句){
循环体
循环变化语句
}

        for循环结构:
            for(初始化语句;循环判断语句;循环变化语句){
                循环体
            }

for循环和while可以相互转换,也就是说,for循环能做的while都能做。

    循环四大要素:
        初始化语句
        循环判断语句
        循环变化语句
        循环体
class WhileDemo {
    public static void main(String[] args) {
        //求1-10之间的和
        int sum = 0;
        /*
        for (int a = 1;a<=10;a++) {
            sum = sum + a;
        }
        System.out.println(sum);


            初始化语句:int a = 1;
            循环判断:a<=10;
            循环变化语句:a++;
            循环体:sum = sum + a;
        */

        int a = 1;
        while(a<=10){
            sum = sum + a;
            a++;
        }
        System.out.println(sum);



    }
}

while循环和for循环的区别(不绝对):
for循环:在循环之外不能访问循环变量。
while循环:可以在循环之外访问循环变量。

    while循环更加适合不知道循环次数的循环。
class WhileFor {
    public static void main(String[] args) {
        int sum = 0;
        /**/
        int a = 1;
        for (;a<=10;a++) {
            sum = sum + a;
        }
        System.out.println(a);

        /*
        int a = 1;
        while(a<=10){
            sum = sum + a;
            a++;
        }
        System.out.println(a);
        */
    }
}

珠穆朗玛峰:
珠峰的高度:8848m
纸张的厚度:0.0002m
求,折叠多少次,纸张的厚度可以超过珠峰

    分析:
        定义珠峰的高度,和纸张的厚度
            double zg = 8848;
            double zh = 0.0002;

        初始化语句:定义纸张折叠的次数。int count = 0;
        循环判断:zh < zg   纸张的厚度小于珠峰的高度时继续循环
        循环变化:count++;
        循环体:zh = zh * 2;
class WhileTest {
    public static void main(String[] args) {
        //定义珠峰的高度,和纸张的厚度
        double zg = 8848;
        double zh = 0.0002;
        //初始化语句:定义纸张折叠的次数
        int count = 0;
        while(zh < zg){
            //循环体,每次让纸张的厚度乘以2
            zh = zh * 2;
            //循环变化,每折叠一次,让折叠次数+1
            count++;
        }
        System.out.println(count);
    }
}

do-While循环格式:
基本格式:
do{
循环体
}while(循环判断);
完整格式:
初始化语句;
do{
循环体
循环变化语句。
}while(循环判断);

class DoWhileDemo {
    public static void main(String[] args) {
        //定义的和
        int sum = 0;
        /*
        for (int a = 1;a<=10;a++) {
            sum = sum + a;
        }


        //初始化
        int a = 1;
        while(a<=10){ //a<=10是循环判断
            //循环体
            sum = sum + a;
            //循环变化
            a++;
        }
        */

        //do-while循环
        //初始化
        int a = 1;
        do{
            //循环体
            sum = sum + a;
            //循环变化
            a++;
        }while(a<=10); //a<=10是循环判断


        System.out.println(sum);
    }
}

do-while和While的区别
while循环:先判断,然后去执行。
do-while循环:先执行后判断。

for、while和do-while循环:
    首选for,然后选择while,最后选择do-while。
    如果已知循环次数的循环,首选for
    如果不知道循环次数,首选while
    如果要求先执行后判断,或者是要求至少执行一次,则选do-while
class DoWhileWhile {
    public static void main(String[] args) {
        //初始化语句
        /*
        int a = 0;
        while(a > 0){
            System.out.println("While循环");
            //循环变化
            a++;
        }
        */

        int a = 0;
        do{
            System.out.println("do-While循环");
            a--;
        }while(a > 0);
    }
}

求1-100之间的和

class XunHuanTest {
    public static void main(String[] args) {
        /*
            求和必须先有一个和
            int sum = 0;1-100之间的和
            初始化语句:int a = 1;
            循环判断:a <= 100
            循环变化:a++
            循环体:sum = sum + a;
        */

        //求和必须先有一个和
        int sum = 0;
        /*
        //for循环
        for (int a = 1;a <= 100;a++) {
            sum = sum + a;
        }


        //while循环
        int a = 1;
        while(a <= 100){
            sum = sum + a;
            a++;
        }
        */

        //do-while循环
        int a = 1;
        do{
            sum = sum + a;
            a++;    
        }while(a <= 100);


        System.out.println(sum);
    }
}

去买衣服,总共有5家商店,每家商店有3件衣服。买衣服的时候,每一件都要去试一下。
现在有5家商店。
初始化语句:int a = 1;
循环判断:a<=5
循环变化:a++
循环体:进入商店,开始试衣服
每家有3件衣服。
初始化:int b = 1;
判断:b<=3
变化:b++
循环体:试衣服

需求增加:
    假设,我在第三家商店,试第2件衣服的时候,发现,很满意,买了。后边的我们就不再试衣服了。


break只能结束当前循环,而且只能结束一层。

使用标签解决这种问题:
    标签格式:
        标签名:循环体    //就是给这个循环起了个别名
    使用:
        break 标签名;    //结束名字叫做"标签名"的循环
        continue 标签名; //结束名字叫做"标签名"的本次循环
class BiaoQianDemo {
    public static void main(String[] args) {
        //控制5家商店
        wc:for (int a = 1;a<=5;a++) {
            System.out.println("进入第"+ a +"家商店,开始试衣服");
            //控制三件衣服
            for (int b = 1;b<=3;b++) {
                System.out.println("正在试第"+ b +"件衣服");

                //在这里判断如果是第三家商店,第二件衣服,我们就买了,然后停止。
                if (a==3 && b==2) {
                    break wc;
                }
            }
        }

        //
        System.out.println("一块去吃个饭吧,吃包子");
    }
}

我要去餐厅吃“狮子头”,我觉的自己太饿了,所以觉得一口气能吃10个。
初始化语句:从第一个开始吃。所以int a = 1;
循环判断:a<=10
循环变化:a++
循环体:就是吃“狮子头”

吃到第5个的时候,我发现,吃不了了。所以我说,停下来,不吃了。

break:让循环停止执行。

break作用:
    1.结束switch语句结构。
    2.结束循环。

break注意事项:
    a.break结束的是循环,必须放在switch或循环中。
    b.break后边的代码不会被执行,也就是说,当程序遇到break时,直接停止语句结构。
    c.同一级别break的后边不能直接写代码。
class BreakDemo {
    public static void main(String[] args) {
        for (int a = 1;a<=10;a++) {
            System.out.println("吃“狮子头”,正在吃第"+a+"个");
            if(a==5){
                //System.out.println("吃不了了。停下来,不吃了");
                break;
            }

            System.out.println("----------");
        }   
    }
}

买苹果,买了10个,然后准备把他全部吃掉.
吃到第5个的时候,发现,这里边多了点蛋白质,这第5个苹果就不再吃了

continue:只能在循环中使用。
    作用:结束本次循环,执行下次循环
    当程序遇到continue时,本次循环结束,执行下次循环。
    注意:
        continue同一级别下,continue后不能直接写代码。
class ContinueDemo {
    public static void main(String[] args) {
        for (int a = 1;a<=10;a++) {         
            if (a == 5) {
                //这个苹果不吃了
                continue;
            }
            System.out.println("吃第"+a+"个苹果");

        }       
    }
}

方法:
参数只和调用有关系。
有参方法:
调用:方法名(参数列表);
无参方法:
调用:方法名();
返回值只和方法调用之后的使用有关。和方法的调用没有任何关系。
有返回值方法:
“方法的调用”可以当作值来使用。
无返回值方法:
“方法的调用”不可以当作值来使用。

class MethodDemo {
    public static void main(String[] args) {
        /*
        //有参方法:
            ycwf(1);  //有参无返回值
            ycyf(1);  //有参有返回值
        //无参方法:
            wcwf();   //无参无返回值
            wcyf();   //无参有返回值
        */

        //有返回值:
            int a = wcyf();   //无参有返回值
            int b = ycyf(1);  //有参有返回值
        //无返回值:
            System.out.println(wcwf());   //无参无返回值
            System.out.println(ycwf(1));  //有参无返回值
    }

    //无参无返回值方法
    public static void wcwf(){
        System.out.println("无参无返回值");
    }
    //无参有返回值,返回值就是1
    public static int wcyf(){
        System.out.println("无参有返回值");
        return 1;
    }
    //有参无返回值,参数就是int类型
    public static void ycwf(int a){
        System.out.println("有参无返回值");
    }
    //有参有返回值,参数int类型,返回值就1
    public static int ycyf(int a){
        System.out.println("有参有返回值");
        return 1;
    }
}

对于重复的内容,Java给我们提供了一项技术,让我们可以把重复性的内容抽取出来,当我们使用时,直接拿出来使用。
这种技术就是“方法(函数)”

方法(函数):就是在类中,完成特定功能的代码块。方法其实就是一个功能或者一个动作。

当我们需要复用一段代码时,我们需要把这段代码提取出来做成一个模块,而这个模块就是方法。

方法的优点:
    1.提高了代码的复用性。
    2.提高了代码的可维护性。

方法意义:
    对于现实生活中而言,方法其实就是一个功能或者一个动作。比如,"吃饭"、"睡觉","学习"这些都叫做方法。
    我现在让你去"学习",这个就是我在调用你的“学习”方法。


方法的组成:
    访问修饰符:限制我们方法的调用。  public static
    返回值:方法执行之后都会有结果,方法给我们带回来的结果就是返回值。
        返回值类型:给我们带回来的结果的数据类型
        返回值:给我们带回来的结果
    方法名:给方法起的名字。
    参数:方法执行的要求。
        参数类型:要求的类型。
        参数名:参数的名字
    方法体:方法具体的代码。

方法的分类:
    对于方法而言,返回值和参数的不同,可以让方法分为4类。
    没有参数,没有返回值的方法。//无参无返回值方法
    没有参数,有返回值方法。    //无参有返回值
    有参数,没有返回值方法      //有参无返回值
    有参数,有返回值方法      //有参有返回值方法。


方法的格式:
    访问修饰符 返回值类型 方法名(参数类型1 参数名,参数类型2 参数名2……){
        //方法体
        return 返回值。
    }
    注意:
        1.这个方法格式,是完整的方法格式。
        2.()里边的参数,有一个统一称呼叫做参数列表。
        3.()里边的参数可以有多个,可以没有。
        4.如果方法没有返回值,方法不允许出现“return 返回值”.


方法的特点:
    1.方法与方法平级。不允许嵌套定义。
    2.方法必须调用才会执行。



    写一个方法,叫做定义一个方法,也就是说,写方法其实就是定义方法。
class FunctionDemo {
    public static void main(String[] args) {            
        System.out.println("-------------------");
    }

    public static void sum(){
        int a = 11;
        int b = 6;
        int sum = a + b;
        System.out.println(sum);
    }
}

无参无返回值方法
格式:
访问修饰符 void 方法名(){
//方法体
}

        无返回值方法的返回值类型是void

    求两个数的和。
        public static void sum(){
                //方法体
        }

无参无返回值方法的调用:方法名();.



1.方法的调用其实就是让方法里边的代码去执行。
2.我们想让代码在那里运行,就让方法在哪里被调用。
class WcWfFunction {
    //main方法是程序的开始。
    public static void main(String[] args) {
        //让方法在main方法中调用
        sum();
    }

    //求两个数的和的方法。
    public static void sum(){
        int a = 5;
        int b = 6;
        int sum = a + b;
        System.out.println(sum);
    }
}

无参有返回值:
格式:
访问修饰符 返回值类型 方法名(){
//方法体
return 返回值。
}

    求两个数的和。

无参有返回值方法的调用:方法名();

无参有返回值方法的调用“方法名()”,这个东西本身就可以看作是一个数值。这个值就是返回值。
    既然是数值:
        1.可以直接输出。
        2.可以作为数值进行赋值。


总结:
    无参方法的调用:方法名();



如果一个名字后边没有(),则一定是个变量,如果名字后有(),则这个名字一定是方法
class WcYfFunction {
    public static void main(String[] args) {
        //调用求和方法
        //sum();
        System.out.println(sum()); //sum();System.out.println(11); 
        //int c = sum();
        //System.out.println(c);
    }

    public static int sum(){
        int a = 5;
        int b = 6;
        int sum = a + b;
        System.out.println("----");
        return sum;
    }

    public static String test(){
        String s = "我爱中国";
        return "我爱Java";
    }

    //返回一个1
    public static int re1(){
        return 1;
    }
}

有参数,有返回值方法
格式:
访问修饰符 返回值类型 方法名(参数类型1 参数名,参数类型2 参数名2……){
//方法体
return 返回值。
}

    调用:方法名(参数列表);

    有返回值方法"方法的调用"这个东西就可以当作是一个值来使用,这个值就是返回值。

    方法的调用:只和参数有关系。
        如果是无参方法调用:方法名();
        有参方法调用:方法名(参数列表);
class YcYfFunction {
    public static void main(String[] args) {
        int a = 5;
        int b = 6;
        sum(a,b);
        //System.out.println(sum);
    }

    //求两个数的和,这两个数,要求我们给,返回计算之后的和
    public static int sum(int a,int b){
        System.out.println(a);
        System.out.println(b);
        int sum = a + b;
        return sum;
    }
}

有参数,没有返回值方法 :
访问修饰符 void 方法名(参数类型1 参数名,参数类型2 参数名2……){
//方法体
}

调用:方法名(参数列表);
class YcWfFunction {
    public static void main(String[] args) {
        String s = "HelloWorld";
        say(s);
        //调用sum方法
        int a = 5;
        int b = 6;
        sum(a,b);
    }

    //输出
    public static void say(String str){
        System.out.println(str);
    }

    //求和方法,求两个数的和,当然这里边什么都没有
    public static void sum(int a,int b){

    }
}

return和break都能立即结束循环。
break结束的只是循环。
return:结束的是方法。

class ReturnDemo {
    public static void main(String[] args) {
        for (int a = 1;a<=10;a++) {
            System.out.println("吃“狮子头”,正在吃第"+a+"个");
            if(a==5){
                return;
                //break;
            }
        }   

        System.out.println("学习《Java》");
        System.out.println("学习《Java》");
        System.out.println("学习《Java》");
        System.out.println("学习《Java》");

总结:
方法分类:
有参和无参方法:
参数之和方法的调用有关系


有参方法的调用

:方法名(参数列表);
无参方法的调用

:方法名();
有返回值方法和无返回值方法
有无返回值只和方法的使用

有关,和方法调用无关。
有返回值方法:”

方法的调用”可以直接当作值来使用。赋值和打印

都可以。
无返回值方法:”

方法的调用”不能当作值来使用,他只是方法中代

码的运行。
方法的特点:
1.方法与方法平级,不能嵌套定义。
2.方法不调用不执行。
3.方法必须先定义然后才能调用。
4.一个类中不能出现两个完全相同的方

法。

顺序结构:语句顺序执行
从main方法开始,自上而下,从左到右,有()先执行()里边的。

条件结构:语句在满足条件下执行
if,
格式:
if(布尔表达式){
当布尔表达式结果为true时,执行{}中的内容
}
if-else,
格式:
if(布尔表达式){
当布尔表达式结果为true时,执行{}中的内容
}else{
当布尔表达式结果为false时,执行else模块中的内容。
}
if-else-if
格式:
if(条件1){
当条件1成立时,执行这里。
}else if(条件2){
当条件1不成立,条件2成立,则执行这里。
}else if(条件3){
当条件1不成立,条件2也不成立,条件3成立,则执行这里
}else{
上述条件都不成立时,执行这里。
}

选择结构:switch
格式:
swicth(表达式或者变量){
case 值1:
语句1; //当表达式或者变量的值是“值1”时,执行这里。
break;
case 值2:
语句2; //当表达式或者变量的值是“值2”时,执行这里。
break;
……
default: //代表否则,当表达式或者变量
语句; //当表达式或者变量的值和以上case都不匹配时,执行这里。
break;
}
注意事项:
1.case和default没有顺序要求。
2.case的值不允许重复
3.case的值只能是常量,
4.表达式或者变量的值的数据类型只能是“byte、short、int、char、String(JDK1.7之后可以使用)”
5.default可以省略,但不建议。
6.break可以省略,但是不允许省略,如果省略则会出现穿透效果。

循环结构:语句在满足条件下循环执行多次
循环四要素:
初始化语句:一般用来定义循环变量。
循环判断语句:用来判断循环是否继续执行下去。
循环变化语句:用来控制循环变量的变化。循环体执行之后执行。
循环体:被循环的内容。
for循环
格式:
for(初始化语句;循环判断语句;循环变化语句){
循环体
}
执行流程:
1.先执行初始化语句。
2.然后执行循环判断语句。
如果结果为true,则执行下一步,执行循环体。
如果结果为false,则循环结束。
3.执行循环体
4.执行循环变化语句
5.执行循环判断语句,其实就是回到了第2步。

while循环:
    基本格式:
        while(判断语句){
            循环体
        }
    完整格式:
        初始化语句;
        while(循环判断语句){
            循环体
            循环变化语句
        }

do-while循环:
    基本格式:
        do{
            循环体
        }while(循环判断语句);
    完整格式:
        初始化语句;
        do{
            循环体
            循环变化语句;
        }while(循环判断语句);


优先选择for,然后while,最后do-while
如果知道循环次数的循环,选择for
如果不知道循环次数的循环,选择while
如果需要先执行后判断或者需要至少执行一次,则选择do-while

跳转语句
break:结束整个循环。
continue:结束本次循环,进行下次循环。
return:结束整个方法。

——- android培训java培训、期待与您交流! ———-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值