Java成员方法

方法基本概念和应用

  • 类的行为就是方法
    public(访问修饰符) 范围数据类型 方法名称(参数列表){
    语句;
    return 返回值(可有可无);
    }
    访问修饰符有四种:public protected 默认 private
    同类内调用方法可直接调用
    跨类调用方法必须new 类,再调用
public class method01 {
    public static void main(String[] args) {//主方法,main栈
        //方法使用
        //1.方法不调用,就不会输出
        //2. 创建对象,使用调用方法
        Person p1=new Person();
        p1.speak();//调用方法
        p1.cal01();
        p1.cal02(5);
        int retuanres=p1.gesum(10, 20);
    }
    
}
class Person{
        String name;
        int age;
        //方法(成员方法)
        //添加spead成员方法,输出我是一个好人
        //1.public 表示方法是公开的
        //2. void:没有返回值
        //3. speak():speak是方法名
        //4。 {}方法体 执行代码
        public void speak(){
            System.out.println("我是一个好人");
        }

        //添加cal01 成员方法,计算从1+...1000
        public void cal01(){
            int res=0;
            for(int i =0;i<1000;i++) res+=i;
            System.out.println("计算结果为"+res);
        } 
        //cal02方法,接受n,计算从1...n
        //1. (int n)形参列表,有一个形参
        public void cal02(int n){
            int res=0;
            for(int i =0;i<n;i++) res+=i;
        }

        //getsum
        //方法执行后返回一个int数值
        public int gesum(int num1,int num2){
            return num1+num2;
        }
    }

方法的调用机制原理

执行getsum方法的时候,栈里会有一块专用的来存放方法里的变量,当值返回之后,该内存块被释放
image
image

方法传参机制

  • 基本数据类型的传参机制
    基本数据类型,传递的是值(拷贝,此乃更惨的任何改变都不会影响实参)
    如下突所示的代码中,当把a和b传到方法里,进行了交换,主方法中的结果还是原来的
    image
    原因是,当调用swap方法时,会开辟一个新栈,临时变量储存在里面,主栈和wasp栈时独立的空间,各存各的,基本数据类型不是引用
    image
  • 引用数据类型的传参机制
    方法中传递的参数为数组(引用形式)
    引用类型传递的是地址
    image
    数组类型的引用数据也是指向堆空间
    image
    修改对象属性,也是传递的地址
    image

思考题:方法里面的1. p=null 2. p=new Person();结果仍为p.age=10!
image

方法重载(Overload)

  • 基本介绍
    Java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致。
    比如:System.out.println(); out是PrintStream类型
  • 重载好处
  1. 减轻了起名的麻烦
  2. 减轻了记名的麻烦
  • 注意事项
  1. 方法名一定要相同
  2. 参数列表:必须不同(类型或者顺序)
  3. 返回类型:没有要求

可变参数

同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。

public class VarParameteDetail {
    public static void main(String[] args) {
        
    }
}
class HspMeyhod{
    public int sum(int n1,int n2){
        return n1+n2;
    }
    public int sum(int n1,int n2,int n3){
        return n1+n2+n3;
    }
    public int sum(int n1,int n2,int n3,int n4){
        return n1+n2+n3+n4;
    }

    //可变参数优化
    //1. int...表示接受的是可变参数,类型是int,可以接受多个int
    //2. 使用可变参数时,可以当做数组来使用 即 nums 可以当做数组
    //3. 遍历求和即可
    public int sum(int... num){
        System.out.println("接收参数个数:"+num.length);
        int res=0;
        for(int i;i<num.length;i++){
            res+=num[i]
        }

    }
}

  • 注意事项和使用细节
  1. 可变参数的实参可以为0个或任意多个。
  2. 可变参数的实参可以为数组。
  3. 可变参数的本质就是数组.
  4. 可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后
  5. 一个形参列表中只能出现一个可变参数
posted @   zzzzzzzk  阅读(50)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示