2021大数据学习之旅 JavaSE·方法


前言

系列文章比较适合非科班的同学, 由浅及深, 循序渐进, 从基础开始走上大数据之路

让我们一起努力, 达成目标, 实现理想

最后恳请留下你的小❤, 点赞给我一个小小的鼓励吧


一、方法的入门

1.1 概述

假如我们使用循环在一段程序中实现在控制台上打印3次helloworld、再打印5次helloworld , 我们会在main方法中编写两段for循环语句 , 若要再来3个打印多次呢 ? 这个时候我们会发现这样编写代码非常的繁琐且重复的代码过多。能否避免这些重复的代码呢,就需要使用方法来实现。

  • 方法: 就是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。

当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。


1.2 无参数无返回值的方法定义

方法完整的定义格式

修饰符 返回值类型 方法名 (参数列表){
    方法体
    return 结果;

  • 定义格式解释:
    • 修饰符: 目前固定写法 public static ,后面再拓展
    • 返回值类型: 目前固定写法 void ,其他返回值类型后面再拓展
    • 方法名:为我们定义的方法起名,满足标识符的规范(小驼峰法),用来调用方法。
    • 参数列表: 目前无参数, 带有参数的方法后面再拓展。
    • return:方法结束。因为返回值类型是void,方法大括号内的return可以不写。

无参数无返回值的方法定义 格式就简化为:

修饰符 void 方法名 (){
    方法体

举例

public static void methodPrint() {
	System.out.println("HelloWorld"); // 自定义功能
}
> 注意:方法必须先定义,后调用,否则程序将报错,而且方法不调用不执行

1.2.1 方法的调用

方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中,直接写要调用的方法名字就可以调用了。

调用格式:

方法名 ();


1.2.2 方法的调用图解

举例

public static void main(String[] args) {
    method(); //调用定义的方法method
}

//定义方法,在main方法中调用
public static void method() {
	System.out.println("这是一个方法");
}

图解
在这里插入图片描述

总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码执行完毕之后,会从栈内存中弹栈消失。


1.2.3 方法练习

打印九九乘法表

阶梯式的打印出九九乘法表

参考

public class MethodTest {
    public static void main(String[] args) {
        print99();
    }
    public static void print99 (){
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+" x "+j+" = "+i*j);
                System.out.print("\t");
            }
            System.out.println();
        }
    }
}


二、方法详解

2.1 定义方法的格式详解

修饰符 返回值类型 方法名 (参数列表){
    方法体
    return 结果;

补充

  • 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
  • return:将方法执行后的结果带给调用者,方法执行到return ,整体方法运行结束,这里的"结果"在开发中,我们正确的叫法成为方法的返回值

2.2 定义方法的三个明确

明确方法名称:给方法起个名字,方便调用,只要符合标识符规则就可以,尽量做到见名知意

明确返回值类型:例如方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。

明确参数列表:例如计算两个整数的和,具体计算哪两个整数的和并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递


2.3 带参数无返回值的方法定义

格式

public static void 方法名 (参数列表){
    方法体

举例

public static void printSum(int a, int b) {
	int sum = a + b;
	System.out.println(sum);
}
> 注意:
	1. 方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个,程序报错
	2. 方法定义时,多个参数之间用“,”隔开
	3. 这里预设的参数int a、int b称作形式参数,简称形参

2.3.1 方法调用

调用格式:

方法名 (参数1,参数2,…);


2.3.2 方法调用流程图解

举例

public static void main(String[] args) {
    printSum(5,6); //调用定义的方法method
}
//定义方法,被main方法调用
public static void printSum(int a,int b){
	int sum = a + b;
    System.out.println(sum);
}

图解在这里插入图片描述


2.3.3 方法练习

输出较大数

定义一个方法用于打印两个数中的较大数,数据来自于方法参数

参考

public class MethodTest {
    public static void main(String[] args) {
        // 调用方法的时候,规定形参有几个,就得给定几个参数,并且数据类型也要一一对应
        getMax(13,14); 
        int a = 520;
        int b = 1314;
        getMax(a, b); //可以使用变量
    }

    public static void getMax(int a, int b) {
        if (a > b) {
            System.out.println(a);
        } else {
            System.out.println(b);
        }
    }
}

2.4 带参数带返回值的方法定义

格式

public static 返回值类型 方法名 (参数列表){
    方法体
    return 结果;

举例

public static int getSum(int a,int b){
	int sum = a + b;
    return sum;
}
> 注意:方法定义时return后面的返回值与方法定义上的数据类型要匹配(目前暂时认为数据类型一致),否则程序将报错

2.4.1 方法调用

调用格式:

数据类型 变量名 = 方法名 (参数1,参数2,… );

方法的返回值通常会使用变量接收,否则该返回值将无意义


2.4.2 方法调用流程图解

举例

public static void main(String[] args) {
    int sum = getSum(13, 14); //调用定义的方法method
	System.out.println(sum);
}
//定义方法,被main方法调用
public static void getSum(int a,int b){
	int c = a + b;
    return c;
}

图解
在这里插入图片描述


2.4.3 方法练习

  • 返回随机小数

定义一个方法,返回 [0, 1) 的随机小数

参考

import java.util.Random;
public class MethodTest {
    public static void main(String[] args) {
        double a = returnDoubel();
        System.out.println(a);
    }

    public static double returnDouble() {
        Random rd = new Random();
        return rd.nextDouble();
    }
}

  • 返回键盘录入值

定义一个方法,返回键盘录入的小数

参考

import java.util.Scanner;
public class MethodTest {
    public static void main(String[] args) {
        double a = returnDoubel();
    }

    public static double returnDoubel() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个随机小数");
        return sc.nextDouble();
    }
}

  • 返回字符串类型的矩形

定义一个方法,返回字符串类型 3x4大小 的*型矩形

参考

public class MethodTest {
    public static void main(String[] args) {
        String a = stringTir(3, 4);
        System.out.println(a);
    }
    
	//int a是行数,int b是列数
    public static String stringTri(int a, int b) {
        String str = "";
        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                 str += "* ";
            }
            str += "\r\n"; //字符串拼接后行首换行
        }
        return str;
    }
}

2.5 定义方法的注意事项

  1. 方法不能嵌套定义
public class MethodDemo {
    public static void main(String[] args) {
    }
    
    public static void methodOne() {
		// 这里会引发编译错误!!!
        public static void methodTwo() {	
    	}
    }
}

  1. 返回值类型,必须要和return语句返回的类型相同,否则编译失败
// 返回值类型要求是int
public static int getSum() {
	return 5;// 正确,int类型
    return 1.2;// 错误,类型不匹配
    return true;// 错误,类型不匹配
}

  1. 同一个方法体中 , 不能在return 语句后面写代码,return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码
public static int getSum(int a,int b) {
  	return a + b;
  	System.out.println("Hello");// 错误,return已经结束,这里不会执行,无效代码
}

  1. void表示无返回值,可以省略return,也可以单独的书写return;,后面不加数据
public class MethodDemo {
    public static void main(String[] args) {
    }
    public static void methodTwo() {
        return 100; //编译错误,因为没有具体返回值类型
        return;	//正确
        System.out.println(100); //return语句后面不能跟数据或代码
    }
}


三、方法重载

3.1 概念

方法重载

指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

  • 多个方法在同一个类中
  • 多个方法具有相同的方法名
  • 多个方法的参数不相同,类型不同或者数量不同

3.2 方法重载练习

使用方法重载的思想,设计比较两个数据是否相等的方法,兼容全整数类型byte,short,int,long

public class Method_Demo {
    public static void main(String[] args) {
        //定义不同数据类型的变量
        byte a = 10;
        byte b = 20;
        short c = 10;
        short d = 20;
        int e = 10;
        int f = 10;
        long g = 10;
        long h = 20;
        // 调用
        System.out.println(compare(a, b));
        System.out.println(compare(c, d));
        System.out.println(compare(e, f));
        System.out.println(compare(g, h));
    }

    // 两个byte类型的
    public static boolean compare(byte a, byte b) {
        System.out.print("byte --> ");
        return a == b;
    }

    // 两个short类型的
    public static boolean compare(short a, short b) {
        System.out.print("short --> ");
        return a == b;
    }

    // 两个int类型的
    public static boolean compare(int a, int b) {
        System.out.print("int --> ");
        return a == b;
    }

    // 两个long类型的
    public static boolean compare(long a, long b) {
        System.out.print("long --> ");
        return a == b;
    }
}


四、方法的练习

遍历数组

设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如:[11, 22, 33, 44, 55]

参考

public class MethodTest01 {
    public static void main(String[] args) {
        //定义一个数组,静态初始化
        int[] arr = {11, 22, 33, 44, 55};
        printArray(arr);
    }

    //定义一个方法,用数组遍历通用格式对数组进行遍历
    /*
        两个明确:
            返回值类型:void
            参数:int[] arr
     */
    public static void printArray(int[] arr) {
        System.out.print("[");
        for(int x=0; x<arr.length; x++) {
            if(x == arr.length-1) {
                System.out.print(arr[x]+"]");
            } else {
                System.out.print(arr[x]+", ");
            }
        }
    }
}

获取数组中的最大值

设计一个方法用于获取数组中元素的最大值

参考

public class MethodTest02 {
    public static void main(String[] args) {
        int[] arr = {12, 45, 98, 73, 60};
        //调用获取最大值方法,用变量接收返回结果
        int number = getMax(arr);
        System.out.println("Max number:" + number);
    }
    
    public static int getMax(int[] arr) {
        int max = arr[0];
        for(int x=1; x<arr.length; x++) {
            if(arr[x] > max) {
                max = arr[x];
            }
        }
        return max;
    }
}

生成指定个数整数

设计一个方法指定生成随机整数个数,并将随机生成的整数全部返回

参考

// import java.util.Random
public static void main(String[] args) {
    int [] a = newInts(6); //随机指定生成长度为6的整数数组
    for (int i = 0; i<a.length; i++){
        System.out.println(a[i]);
    }
}
public static int[] newInts(int length){
    int [] arr = new int[length];
    Random rd = new Random();
    for (int i = 0; i < length; i++) {
        arr[i] = rd.nextInt();
    }
    return arr;
}


总结


左上角主页里面有所有系列文章喔!

消除贫穷的最好办法就是和我一起学大数据,加油,奥利给!

看到这里点个赞吧!

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值