[Java]方法及引用数据类型

定义方法前思考的问题:

  1. 我要干什么?
  2. 干这件事情需要什么才能完成?

方法

方法(method)是程序中最小执行单元

重复的代码,具有独立功能的代码可以抽取到方法中

方法的好处:

  1. 提高代码的复用性
  2. 提高代码的可维护性

注意:

  • 方法必须先创建才可以使用,该过程成为方法定义

  • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

方法的定义

定义格式:

public static void 方法名 (   ) {
    // 方法体;
}

调用格式:

方法名();

注:  方法必须先定义再调用,否则程序报错

无参:
public class Test3 {
    public static void main(String[] args) {
        System.out.println("Hello World");
        method();
        System.out.print("Java ");
    }

    private static void method() {
        System.out.print("Hello ");
    }

}
有参: 

参数:由数据类型和变量名组成 - 数据类型 变量名 例如:int a

定义:

public static void 方法名 (参数1) {
    方法体;
}

public static void 方法名 (参数1, 参数2, 参数3...) {
    方法体;
}

注:法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错。方法定义时,多个参数之间使用逗号( ,)分隔

调用:

方法名(参数);

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

public class Test5 {
    public static void main(String[] args) {
        getSum(6,7);//6,7为实参
    }
    public static void getSum(int a, int b) {//a,b为形参
        int sum = a + b;
        System.out.println(sum);
    }
}
 形参和实参:

形参:方法定义中的参数

实参:方法调用中的参数

方法调用过程中形参和实参必须一 一对应!

exercise:

求圆面积方法

package day7;

public class Test7 {
    public static void main(String[] args) {
        Area(9);
    }
    public static void Area(int r){
        double res = 3.14*r*r;
        System.out.println(res);
    }
}
带返回值有参:

方法的返回值就是程序运行的结果

格式:

public static 数据类型 方法名 ( 参数 ) { 
    return 数据 ;
}

 注:方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错

 调用格式:

直接调用:方法名 ( 实参 ) ;
赋值调用:数据类型 变量名 = 方法名 (实参 ) ;

输出调用:System.out.ptintln(方法名(实参))

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

方法注意点

  • 方法不调用就不执行
  • 方法之间是平级关系,不能互相嵌套定义
  • 方法的编写顺序和执行顺序无关
  • 返回值类型为void表示该方法没有返回值,没有返回值的方法可以省略return语句不写。
  • return下面不能编写代码,因为永远执行不到,属于无效代码

Return关键字

方法无返回值:可以省略不写。

方法有返回值:必须要写。表示方法返回值和返回结果

方法的重载

方法的名称相同,但方法的参数不同(个数,类型,顺序)

例如:

add(int a,int b);
add(int a,int b,int c);
public class Test10 {
    public static void main(String[] args) {
        compare((byte)1, (byte)2);
    }
    public static void compare(byte b1, byte b2) {
        System.out.println(b1 == b2);
    }
    public static void compare(int  b1, int b2) {
        System.out.println(b1 == b2);
    }
}

方法与内存

方法调用基本原理:

众所周知,方法在执行过程中是存储在栈内存中的,栈的特性是先进后出,后进先出。如下图所示:在程序执行过程中,方法1先进入栈内存,方法2次之,最后是方法3。方法执行完毕后方法按照后进先出的顺序出栈。

 基本数据类型和引用数据类型:

基本数据类型:整数、浮点数、布尔、字符

引用数据类型:除了基本数据类型都是

基本数据类型:

基本数据类型变量中存储的是真实的数据

引用数据类型: 

当一个变量中存储的不是真实的数据而是其他空间的地址值的时候,这个变量就是引用数据类型(只要是new出来的就是引用数据类型)

基本数据类型:其数据值是存储在自己的空间中的

引用数据类型:数据值存储在其他空间之中的,自己空间中存储的是地址值 

方法的值传递: 

1.基本数据类型:

number在程序执行完成后,其值仍然是100;因为程序在执行到change()方法时候,200是赋值给的change中的number,为局部变量。传递基本数据类型时,传递的是真实的数据,形参改变不影响实际参数的值

public class Test1 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println(number);
        change(number);
        System.out.println("后:"+number);
    }

    private static void change(int number) {
        number = 200;
    }
}

2.引用数据类型 

 将改为引用数据类型后,执行后arr[1]的值变为2000。因为change方法中的number[] 数组和arr[]数组都是指向的同一处堆内存地址空间。number数组修改的值是直接修改指向的堆内存地址所对应的值。传递引用数据类型时候,传递到是地址值,形参的改变,影响实际参数的值。

public class Test3 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,8};
        System.out.println(arr[1]);
        change(arr);
        System.out.println("后:"+arr[1]);
    }

    private static void change(int[] number) {
        number[1] =1000;
    }
}

 

方法细节

方法中return和break的区别:

return:和循环无关,表示方法结束和返回的结果

break:和方法无关,表示结束循环和switch

    public static boolean Containsx(int key,int[] arr){
        for (int i = 0;i<arr.length;i++){
            if (arr[i] == key){
                return true;
            }
        }
        return false;
    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值