Java选择结构与方法入门

选择结构

switch(表达式){

        case:常量值1:

                语句体1;

                break;

        case:常量值2:

                语句体;

                break;

        default:

                语句体n+!;

                break;

                

}

执行流程:

1、首先计算表达式的值

2、其次,和case值进行比较,一旦有对应的值,就会执行响应的语句,在执行的过程中,遇到break就会结束。

3、最后,如果所有的case都和表达式不匹配,就会执行default语句结束后,然后程序结束。

循环结构

while(){}

此种循环结构,适用于循环次数不确定的情况下进行的循环。

do...while()

此种循环首先会进行一次语句的执行。

for()循环:适用于循环次数确定的循环; 可以进行循环的嵌套

代码如下:

/**
 * 打印输出菱形
 */
private static void show04() {
    for(int i = 1;i<=4;i++) {
        for(int k = 1;k<=4-i;k++) {
            System.out.print(" ");
        }

        for(int j = 1;j<=2*i-1;j++) {
            System.out.print("*");
        }
        System.out.println();
    }

    for(int i = 3;i>=1;i--) {
        for(int k = 1;k<=4-i;k++) {
            System.out.print(" ");
        }

        for(int j = 1;j<=2*i-1;j++) {
            System.out.print("*");
        }
        System.out.println();
    }

}

方法的入门:

方法其实就是若干语句的功能集合;

方法的格式:

方法参数;就是进入方法的数据

返回值类型;就是从方法中出来的数据

定义方法的完整的格式:

修饰符 返回值类型 方法名称(参数类型 参数名称,.......){

        方法体;

        return 返回值;

}

注意事项:就是要注意方法的格式

修饰符:现在的固定的类型 public static 

返回值类型:就是最终数据的产生的类型(数据输出的类型是什么)

方法的名称:就是方法的名字;规则和变量一样,就是小驼峰;

参数类型:进入方法的数据的类型是什么;

参数名称:进入方法的数据对应的变量的名称是什么;

return 的作用:1、停止当前方法 ;      2、将后边的返回值还给方法的调用处;

返回值:就是方法最终产生的数据值;

return 后面的“返回值”应该与方法名称前面的返回值类型保持一致;

代码如下:

public class Demo04 {
    public static void main(String[] args) {
        int sum = showsum(2, 4);
        System.out.println(sum);

    }
    public static int showsum(int a,int b){
        return a+b;
    }
}

方法定义完成之后,必须要在main()方法种进行调用;

调用的格式:

方法名称();

注意事项:

1、方法定义的顺序是无所谓的

2、方法的定义必须是挨着的,不能在方法的内部再进行方法的定义

3、方法再定义之后,自己是不能进行调用的,如果要进行使用的话,需要再main方法中进行调用。

class Demo01{ 

public static void main(String[] args){

        show04();

}

private static void show04() {
    for(int i = 1;i<=4;i++) {
        for(int k = 1;k<=4-i;k++) {
            System.out.print(" ");
        }

        for(int j = 1;j<=2*i-1;j++) {
            System.out.print("*");
        }
        System.out.println();
    }

    for(int i = 3;i>=1;i--) {
        for(int k = 1;k<=4-i;k++) {
            System.out.print(" ");
        }

        for(int j = 1;j<=2*i-1;j++) {
            System.out.print("*");
        }
        System.out.println();
    }

}

}

方法的调用的三种方式:

1、单独调用:方法名称(参数列表);

2、赋值调用:数据类型 变量名称=方法名称(参数列表);

3、打印调用:System.out.println(方法名称(参数列表));

注意事项:此前学习的固定的写法,public static void 方法名称(){},这种方法只能进行单独调用,不能使用赋值调用和打印调用。

方法有参:小括号当中有参数,当一个方法中需要一定的数据条件时,才能完成任务时,就是有参数。

方法无参:小括号当中没有参数,也就是当方法中不需要数据条件时,就是无参;

代码如下:打印从1900年到某一年的某一个月的日历

package Weeks02.days02_qianfeng;

import java.util.Scanner;

public class Demo021990 {
    public static void main(String[] args) {
        System.out.println("请输入当前年份");
        Scanner scanner=new Scanner(System.in);
        int year = scanner.nextInt();
        System.out.println("请输入请输入当前月份");
        int month = scanner.nextInt();
        int week=(getdatefromyear(year)+getdatefrommonth(year,month)+1)%7;
        showCalden(week,year,month);
    }

    public static boolean isLeapYear(int year){
        return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }

    public static int getmonthdays(int year,int month){
        switch(month){
            case 2:
                return isLeapYear(year) ? 29 : 28;
            case 4:
            case 6:
            case 9:
            case 11:
                return 30;
            default:
                return 31;
        }
    }

    public static int getdatefromyear(int year){
        int dates=0;
        int totaldays=0,totalyear=0,totalmonth=0;
        for (int i=1990;i<year;i++){
            if (i%4==0&&i%100!=0 || i%400==0){
                dates=366;
            }else {
                dates=365;
            }
            totalyear+=dates;

        }
        return totalyear;
    }
    public static int getdatefrommonth(int year,int month){
        int dates=0,totalmonth=0;
        for(int i = 1;i <month;i++) {
            switch(i) {
                case 2:
                    if((year%4 == 0&&year%100!=0) || year%400==0) {
                        dates =29;

                    }else {
                        dates= 28;

                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    dates =30;
                    break;
                default:
                    dates =31;
                    break;
            }
            totalmonth+=dates;
        }
        return totalmonth;
    }
    public static void showCalden(int week,int year,int month){
        System.out.println("日\t一\t二\t三\t四\t五\t六\t");
        int count=0;
        for (int i=1;i<=week;i++){
            System.out.print("\t");
            count++;
        }
        for (int j=1;j<=getmonthdays(year,month);j++){
            System.out.print(j+"\t");
            count++;
            if (count%7==0) {
                System.out.println();
            }
        }
    }

}

方法的重载:

多个方法的名称一样,但是参数列表不一样。

public class Demo03MethodOverload {
    public static void main(String[] args) {
        int sum = sum(12, 4, 2);
        System.out.println(sum);


    }
    public static int sum(int a,int b){
        return a+b;
    }
    public static int sum(int a, int b,int c){
        return a+b+c;
    }
    public static int sum(int a, int b,int c,int d){
        return a+b+c+d;
    }

}

方法重载与下列因素相关:

1、参数个数不同

2、参数类型不同

3、参数的多类型顺序不同

方法重载与下列因素无关:

1、与参数的类型无关

2、与参数的返回值类型无关;

代码如下:

package Weeks01.days07_qianfeng;

public class Demo04 {
    public static void main(String[] args) {
        byte a=10,b=20;
        System.out.println(isSame(a,b));
        System.out.println(isSame(10,20));
        System.out.println(isSame((short)10,(short)20));
        System.out.println(isSame((long)10,(long)20));

    }

    public static boolean isSame(int a,int b){
        if (a==b){
            return true;
        }else {
            return false;
        }
    }

    public static boolean isSame(long a,long b){
        boolean same;
        if (a==b){
            same=true;
        }else {
            same=false;
        }
        return same;
    }

    public static boolean isSame(byte a,byte b){
        return a==b;
    }

    public static boolean isSame(short a, short b){

        return a==b? true:false;
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值