Java-方法

1.什么是方法

定义:程序中最小的执行单元

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

2.方法的格式

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

方法调用:方法定义后并不是直接运行的,需要手动调用才能执行

2.1 最简单的方法

定义格式:

public static void 方法名(){

        方法体(就是打包起来的代码);

}

范例:

 public static void playGame(){
        打印语句;
 }

调用格式:

        方法名();

范例:

playGame();

练习1:

public class fangFa {
    public static void main(String[] args) {
        playGame();
        playGame();
    }
    public static  void playGame(){
        System.out.println("选人物");
        System.out.println("对线");
        System.out.println("赢/输");
    }
}

练习2:展示女朋友的信息

public class girlFriend {
    public static void main(String[] args){
        printInfo();
    }
    public static void printInfo(){
        System.out.println("xcm");
        System.out.println("18");
        System.out.println("intelligent");
    }
}

练习3:看代码说结果

public class demo3 {
    public static  void main(String[] args){
        System.out.println("a");
        method1();
        System.out.println("b");
    }
    public static void method1(){
        method2();
        System.out.println("c");
    }
    public static void method2(){
        System.out.println("d");
        System.out.println("e");
    }
}

输出:a         d        e        c        b

练习4:定义一个方法,在方法内部定义两个变量

public class demo4 {
    public static void main(String[] args){
        sum();
    }
    public static void sum(){
        int num1=10;
        int num2=20;
        int result=num1+num2;
        System.out.println(result);

    }
}

2.2 带参数的方法

定义格式:

public static void 方法名(参数1,参数2,... ...)

{... ...}

范例:

public static void getSum(int number1,int number2,... ...)

{... ...}

调用格式:

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

范例:

getSum(num1,num2... ...);

形参:形式参数,方法定义中的参数

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

🐖:方法调用时,形参与实参必须一一对应,否则程序将报错

练习1:定义一个方法,求长方形的周长,将结果在方法中打印

public class demo5 {
    public static void main(String[] args){
        getLength(5.2,1.3);
    }
    public static void getLength(double len,double width){
        double res=(len+width)*2;
        System.out.println(res);
    }
}

练习2:定义一个方法,求圆的面积,将结果在方法中打印

public class demo6 {
    public static void main(String[] args){
        area(2);
    }
    public static void area(double radius){
        double res=radius*radius*3.14;
        System.out.println(res);
    }
}

2.3 带返回值的方法

为什么要有带返回值的方法呢 ?

如果在调用出要根据方法的结果,去编写另外一段代码逻辑,为了在调用出拿到方法产生的结果,就需要定义带有返回值的方法

格式:

public static 返回值类型 方法名(参数){

        方法体;

        return 返回值;

}

范例:

public static int sum(int a,int b){
    int res=a+b;
    return res;
}

调用方式:

①直接调用:

方法名(实参);

②赋值调用:

整数类型 变量名=方法名(实参);

③输出调用:

System.out.println(方法名(实参));

练习1:定义一个方法,求一家商场每个季度的营业额,根据方法结果计算出全年的营业额

public class demo7 {
    public static void main(String[] args){
        int sum1=getSum(10,20,30);
        int sum2=getSum(15,20,30);
        int sum3=getSum(15,20,30);
        int sum4=getSum(20,20,30);
        int sum=sum1+sum2+sum3+sum4;
        System.out.println(sum1);
        System.out.println(sum2);
        System.out.println(sum3);
        System.out.println(sum4);
        System.out.println(sum);
    }
    public static int getSum(int num1,int num2,int num3){
        int res=num1+num2+num3;
        return res;
    }
}

练习2:定义方法,比较两个长方形的面积

public class demo8 {
    public static void main(String[] args){
        int area1=getArea(5,4);
        int area2=getArea(6,3);
       if(area1>area2){
           System.out.println("第一个长方形更大");
       }else{
           System.out.println("第二个长方形更大");
       }
    }
    public static int getArea(int len,int width){
       int area=len*width;
       return area;
    }
}

3.方法的重载

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

也就是说,在同一个类中,方法名相同,参数不同的方法,就是重载,与返回值无关

练习1:区分一下方法是否构成重载关系

public static void fn(int a){

    }
public static int fn(int a){

    }

不构成,两个方法参数相同

 public static float fn(int a){

    }
 public static int fn(int a,int b){

    }

构成

public class demo9 {
    public static void fn(int a){

    }
}
public class demo10 {
   
    public static int fn(double a){

    }
}

不构成,两个方法分别在两个类里面

public class demo9 {
    public static void fn(int a){

    }
    public static int fn(double a){

    }
}

构成

public class demo9 {
    public static void fn(int a,double b){

    }
    public static int fn(double a,int b){

    }
}

构成

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

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

4.方法的内存

4.1 方法调用的基本内存原理

public class demo10 {
    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方法执行完毕,出栈,回到调用study方法的地方

 继续执行eat方法

sleep方法进栈

 

 sleep方法执行完毕,出栈

 eat方法执行完毕,出栈

 mani方法执行完毕,出栈

 

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

数据值存储在自己的空间中

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

引用数据类型:new出来的,如:数组

数据值存储在其他空间中

自己空间中存储的是地址值

5.方法的值传递

public class demo11 {
    public static void main(String[] args){
        int number=100;
        System.out.println("调用change方法前:"+number);
        change(number);
        System.out.println("调用change方法后:"+number);
    }
    public static void change(int number){
        number=200;
    }
}

输出:

调用change方法前:100
调用change方法后:100

在change 方法中,把200赋值给了change方法中的number,不会影响main方法中的number

🐖:传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值

要想改变 number的值,需要在change方法中返回number的值,并将这个值赋值给number

public class demo11 {
    public static void main(String[] args){
        int number=100;
        System.out.println("调用change方法前:"+number);
        number=change(number);
        System.out.println("调用change方法后:"+number);
    }
    public static int change(int number){
        number=200;
        return number;
    }
}

输出:

调用change方法前:100
调用change方法后:200

public class demo11 {
    public static void main(String[] args){
        int[] arr={10,20,30};
        System.out.println("调用change方法前:"+arr[1]);
        change(arr);
        System.out.println("调用change方法后:"+arr[1]);
    }
    public static void change(int[] arr){
        arr[1]=200;
    }
}

🐖:传递引用数据类型时,传递的是是地址值,形参的改变,影响实际参数的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值