Java基础知识8:方法

1.什么是方法?

方法是程序中最小的执行单元

2.实际开发中,什么时候用到方法?

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

3.实际开发在,方法有什么好处?

  • 提高代码的复用性
  • 提高代码的可维护性

4.方法不调用就不执行

5.方法与方法之间是平级关系(编写顺序和执行顺序无关),不能互相嵌套定义

6.方法的返回值为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。

如果要编写return,后面不能跟具体的数据

7.return下面的代码无效会报错

方法的格式

方法定义:把一些代码打包在一起的过程

方法调用:手动调用方法

最简单的方法定义格式:

//方法定义格式
public static void 方法名(){
    方法体(就是打包起来的代码);
}

//方法定义范例
public static void playGame(){
    七个打印语句;
}

//方法调用格式
方法名();

//方法调用范例
playGame();

方法必须先定义再调用,否则会报错

public class KV{
    public static void main(String args[]){
        //目标:掌握最简单的方法定义和调用的格式

        //调用方法
        playGame();
        playGame();
    }
    //定义一个方法
    public static void playGame(){
        System.out.println("rushA");
        System.out.println("rushB");
    }
}

带参数的方法:

public class KV{
    public static void main(String args[]){
        System.out.println("5");
        getSum(10,20);   
        System.out.println("30");
    }
 
    public static void getSum(int num1, int num2){
        int result=num1+num2;
        System.out.println(result);
    }


}

形参:形式参数,是指放啊定义中的参数

实参:实际参数,方法调用中的参数

public class KV{
    public static void main(String args[]){
        getArea(10);   

    }
 
    public static void getArea(double radium){
        double result=radium*radium*3.14;
        System.out.println(result);
    }


}

带返回值方法的定义和调用:

调用出拿到方法的结果之后,才能根据结果进行下一步操作。

方法的返回值其实就是方法运行的最终结果。

  • 如果在调用出要根据方法的结果,去编写另外一段代码逻辑
  • 为了在调用处拿到方法产生的结果,就需要定义带有返回值的方法。
//带返回值方法定义格式
public static 返回值类型 方法名(参数){
    方法体;
}

//带返回值方法定义范例
public static int getSum(int a, int b){
    int c = a + b;
    return c;
}

//带返回值方法调用格式

//1.赋值调用
整数类型 变量名= 方法名(实参);
//2.输出调用
System.out.println(方法名(实参));

示例1:

public class KV{
    public static void main(String[] args){
        int sum = getSum(10, 20, 30);
        System.out.println(sum);
        System.out.println(getSum(10, 20, 30));

    }
    public static int getSum(int num1, int num2, int num3){
        int result = num1 + num2 +num3;
        return result;

    }
}

示例2:

public class KV{
    public static void main(String[] args){
        int sum1 = getSum(10, 20, 30);
        int sum2 = getSum(40, 20, 30);
        int sum3 = getSum(50, 20, 30);
        int sum4 = getSum(10, 60, 30);
        int sum = sum1+sum2+sum3+sum4;
        System.out.println(sum);

    }
    public static int getSum(int num1, int num2, int num3){
        int result = num1 + num2 +num3;
        return result;

    }
}

练习:比较两个长方形的面积

public class KV{
    public static void main(String[] args){
        double area1 = getArea(10,49);
        double area2 = getArea(40, 20);
        if(area1>area2){
            System.out.println("第一个长方形面积更大");
        }else{
            System.out.println("第二个长方形面积更大");
        }


    }
    public static double getArea(double len, double width){
        double area = len*width;
        return area;

    }
}


方法的重载

  • 在同一个类中,定义了多个同名的方法,这些同名的方法具有同种的功能。
  • 每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系

简单来说就是:同一个类中,方法名相同,参数不同的方法就叫重载。与返回值无关。

参数不同:个数不同、类型不同、顺序不同。

练习:

需求:使用方法重载的思想,设计比较两个整数是否相同的方法

要求:兼容全整数类型(byte,short,int,long)

public class KV{
    public static void main(String[] args){
        compare(10,20);
        compare((byte)10,(byte)20);
        byte b1 = 10;
        byte b2 = 20;
        compare(b1,b2);
    }
    public static void compare(byte b1, byte b2){
        System.out.println("byte");
        System.out.println(b1==b2);
    }
    public static void compare(short s1, short s2){
        System.out.println("short");
        System.out.println(s1==s2);
    }
    public static void compare(int i1, int i2){
        System.out.println("int");
        System.out.println(i1==i2);
    }
    public static void compare(long n1, long n2){
        System.out.println("long");
        System.out.println(n1==n2);
    }
}

练习1:数组遍历

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

练习2:

练习3:

练习4:

方法的内存

方法调用的基本内存原理

1.Java内存分配

  • 栈:方法运行时使用的内存,方法进栈运行,运行完毕就出栈
  • 堆:new出来的,都在堆内存中开辟了一个小空间
  • 方法区:存储可以运行的class文件
  • 本地方法栈:JVM在使用操作系统功能的时候使用,与开发无关
  • 寄存器:给CPU使用,与开发无关
public class KV{
    public static void main(String[] args){
        eat();
    }
    public static void eat(){
        study();
        System.out.println("吃饭");
        sleep();
    }
    public static void sleep(){
        System.out.println("睡觉");
    }
    public static void study(){
        System.out.println("学习");
    }
}

方法:study

   sout(”学习“);

方法:sleep

        sout(”睡觉“);

  

方法:eat

        study();

方法:eat

        study();

        sout(”吃饭“);

方法:eat

        study();

        sout(”吃饭“);

        sleep();

方法:eat

        study();

        sout(”吃饭“);

        sleep();

方法:main

        eat();

方法:main

        eat();

方法:main

        eat();

方法:main

        eat();

方法:main

        eat();

2.方法传递基本数据类型的内存原理

基本数据类型:变量存储的是真实的数据,数据值是存储在自己的空间中

  • 整数类型
  • 浮点数类型
  • 布尔类型
  • 字符类型

引用数据类型(new出来的):变量中存储的是地址值,数据值是存储在其他空间中

引用:使用了其他空间中的数据

3.方法传递引用数据类型的内存原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DoorBreaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值