栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

5.Java方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

5.Java方法

1.方法 1.方法是什么

方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用

好处

提高代码的复用性

让程序的逻辑更简单

定义方法===》调用方法 ===》方法的内存图 ===》方法的参数传递机制 ===》方法的其他常见形式、技术

定义方法:方法有很多不同形式的写法,需要掌握在不同的业务场景下写出合适的方法形式

调用方法:方法定义出来是拿来调用的,只有调用才能让方法跑起来

方法的内存图:方法在内存中具体是怎么去工作的

方法的参数传递机制:方法的参数传递原理是什么样的,需要注意什么问题

方法的其他常见形式、技术:如方法在开发中常见的开发形式:方法重载、方法递归

2.定义方法

方法定义的完整格式

修饰符 返回值类型 方法名(形参列表){
    方法体代码(需要执行的功能代码)
     retrun 返回值;
}
public static int add(int a,int b){
	int c = a + b;
    return c;
}
3.调用方法

方法必须调用才能跑起来

调用格式

方法名(...)
int c = add(10,20);
System.out.println(c);

方法格式的注意点

方法的修饰符:暂时都使用public static修饰

方法中声明了具体的返回值类型,内部必须使用return返回对应类型的数据

形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值

4.方法的其他写法

方法定义时:返回值类型、形参列表可以按照需求进行填写

修饰符 返回值类型 方法名(形参列表) {
    方法体代码(需要执行的功能代码){
        return 返回值;
    }
}

示例

public static void main(String[] args) {
    // 方法定义的其他形式 (无参数,无返回值方法 )
    print();
}

public static void print() {
    for (int i = 0;i<3;i++) {
        System.out.println("hello");
    }
}

注意:如果方法不需要返回结果,返回值类型必须要用void(无返回值),此时方法内部不可以使用return返回数据

方法如果没有参数,或者返回值类型声明为void可以称为无参数、无返回值的方法,依此类推

5.方法的常见问题

方法的编写顺序无所谓

方法与方法之间是平级关系,不要嵌套定义

方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回数据

return语句下面,不能编写代码,因为永远执行不到,属于无效的代码

方法不调用就不执行,调用时必须严格匹配方法的参数形况

有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用,无返回值方法的调用只能直接调用

方法定义的技巧

修饰符:public static(暂时固定)

方法名称:自己取名,有意义,英文小小,驼峰模式(有意义的名字即可)

方法体代码:完成自己需要写的功能代码即可(具体需求具体实现)

真正需要关注的就两点:

1.分析方法是否需要声明返回值类型

2.分析方法是否需要接收参数

6.方法的调用流程

方法没有被调用的时候,在方法区中的字节码文件中存放

方法被调用的时候,需要进入到栈内存中运行

7.方法的参数传递机制 1.基本类型的参数传递机制

Java的参数传递机制:值传递

在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递

注意:

实参:如在方法内部定义的变量

形参:如在定义方法时,”()“中所声明的参数

public static void main(String[] args) {
    int a = 10;
    changea(a);
    System.out.println(a); // 10
}

public static void changea(int a) {
    System.out.println(a); // 10
    a = 20;
    System.out.println(a); // 20
}
2. 引用类型的参数传递
public static void main(String[] args) {
    int[] arr = {1,2,3,4,5};
    changeArr(arr);
    System.out.println(arr[1]); // 100
}
public  static  void changeArr(int[] arr) {
    System.out.println(arr[1]); // 2
    arr[1] = 100;
    System.out.println(arr[1]); // 100
}
8.方法重载

同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法就是重载方法

public static void main(String[] args) {
    // 方法重载
    sports();
    sports("早上");
    sports("早上", "半小时");
}
public static void sports() {
    System.out.println("跑步");
}
public static void sports(String times) {
    System.out.println(times+"跑步");
}
public static void sports(String times, String duration) {
    System.out.println( times +"跑步" + duration);
}
public static void main(String[] args) {
	// 方法重载
	sports();
	sports("早上");
	sports("早上", "半小时");
}
public static void sports() {
	sports("早上");
}
public static void sports(String times) {
	sports(times, "半小时");
}
public static void sports(String times, String duration) {
	System.out.println( times +"跑步" + duration);
}

方法重载的识别技巧

只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他不管(修饰符,返回值类型都无所谓)

形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称

// 新方法
public static void open() {}
// 重载方法
public static void open(int a) {}
// 重载方法
public void open(int a, int b) {}
// 重载方法
public static void open(double a,int b){}
// 重载方法
public static  void open(int a, double b){}
// 重复方法
//    public void open(int i, double d){}
9.return关键字单独使用

return --> 可以立即跳出并结束当前方法的执行,return关键字单独是使用可以放在任何方法中

public static void main(String[] args) {
    chu(10,0);
}
public static void chu(int a,int b) {
    if(b == 0) {
        System.out.println("除数不能为0");
        return;
    }
    int c = a / b;
    System.out.println("结果是c"+c);
}
2.案例 1.计算1-n的和返回

需求:定义一个方法,方法中计算出1-n的和并返回

public static void main(String[] args) {
    // 计算1-n的和返回
    System.out.println(sum(10));
    System.out.println(sum(100));
}

public static int sum(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++) {
        sum+= i;
    }
    return  sum;
}
2.判断整数是奇数还是偶数

需求:拿一个整数,然后调用方法,把整数交给方法,在方法中输出该数为奇数还是偶数

public static void main(String[] args) {
    // 判断一个整数是奇数还是偶数
    Scanner sc = new Scanner(System.in);
    while (true) {
        System.out.println("请输入一个整数");
        int num = sc.nextInt();
        oddOrEven(num);
    }
}

public static  void oddOrEven(int n) {
    if (n % 2 == 0) {
        System.out.println(n+"是偶数");
    } else {
        System.out.println(n+"是奇数");
    }
}
3.数组求最值

需求:找出一个数组中的最大值

public static void main(String[] args) {
    // 将数组求求最值改造成方法
    int[] arr1 = {23,45,5,55,6,32};
    System.out.println(getMaxNum(arr1));
}

public static int getMaxNum(int[] arr) {
    int maxNum = arr[0];
    for (int i = 0; i < arr.length; i++) {
        if(arr[i]>maxNum) {
            maxNum = arr[i];
        }
    }
    return maxNum;
}
4.打印整型数组内容

需求:设计一个方法用于输出任意整型数组的内容

public static void main(String[] args) {
    // 打印任意整型数组的内容
    int[] ages = {10, 20, 30, 23};
    printArray(ages);
}
public  static  void printArray(int[] arr) {
    System.out.print("[");
    for (int i = 0; i < arr.length; i++) {
        if (i == arr.length-1) {
            System.out.print(arr[i]);
        } else  {
            System.out.print(arr[i]+",");
        }
    }
    System.out.print("]");
}
5.从数组中查询指定元素的索引

需求:设计一个方法可以接收整型数组,和要查询的元素值,最终返回元素在该数组中的索引, 如果数组中不存在该元素则返回-1

public static void main(String[] args) {
    // 从整型数组中查询某个数据的索引返回
    int[] arr = {1,2,3,4,5,6};
    System.out.println("请输入你要查询的数据");
    Scanner sc = new Scanner(System.in);
    int data = sc.nextInt();
    int index = searchIndex(arr, data);
    System.out.println(index);
}
public static int searchIndex(int[] arr, int data) {
    for (int i = 0; i < arr.length; i++) {
        if(arr[i] == data) {
            return i;
        }
    }
    return -1;
}
6.比较两个数组是否一样

需求: 如果两个数组的类型,元素个数,元素顺序和内容是一样的,可以认为这两个数组是一摸一样的

public static void main(String[] args) {
    // 比较两个数组是否一样
    int[] arr1 = {1,2,3,4,5};
    int[] arr2 = {1,2,3,4,3};
    boolean isCompare = compare(arr1,arr2);
    System.out.println(isCompare);
}
public static boolean compare(int[] arr1, int[] arr2) {
    if (arr1.length != arr2.length) {
        return false;
    }
    for (int i = 0; i < arr1.length; i++) {
        if(arr1[i] != arr2[i]) {
            return false;
        }
    }
    return true;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号