方法

定义

  1. 修饰符(可选的)
    • public
    • static
    • final
  2. 返回值类型
  3. 方法名
  4. 参数
  • 形参:定义方法时
  • 实参:调用方法时传递的参数
  1. 方法体

调用

static是跟随类的,所以静态方法不能直接调用非静态
非静态方法属于对象,new 实例化之后才存在

静态调用静态
  • 同类:直接调用
  • 不同类:类名.方法名
静态调用非静态
  • 对象.方法名
非静态调用静态
  • 同类:直接调用
  • 不同类
    1. 类名.方法名
    2. 对象.方法名
非静态调用非静态
  • 同类:直接调用
  • 不同类:对象.方法名

值传递

实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参

byte shourt int long float double char boolean String

public class Test01 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);//1
        update(a);
        System.out.println(a);//1
    }

    public static void update(int b) {
        b = 2;
    }
}

引用传递

实参传递给形参的是参数对于 堆内存上的引用地址 实参和 形参在内存上指向 了同一块区域 对形参的修改会影响实参
引用传递:对象,本质还是值传递,传递的是对象是一个具体的值,

public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);//null
        change(person);
        System.out.println(person.name);//jpy
    }
    
    public static void change(Person person) {
        //person是一个对象:指向的是--》Person person=new Person();这是一个具体的人,可以改变属性
        person.name="jpy";//把jpy传递给了person。所以还是值传递
    }
}

class Person {
    String name;
}

重载和重写

重载overload
  • 方法名相同
  • 参数列表不同(个数不同,或类型不同或参数排列顺序不同)
  • 与返回值类型无关
重写override

子类对父类

  • 名称相同
  • 参数列表相同
  • 异常处理方式可以变小
  • 权限修饰与父类相同或高于父类

参数

main方法传参

dos命令,先javac,再java时:

java 类名 第一个参数 第二个参数 第三个参数。。。。,

可变参数

一个方法中只能指定一个可变参数,且必须在所有普通参数之后

public class Test {
    public static void main(String[] args) {
        test("hello", 1, 2, 3);
    }

    public static void test(String s, int... a) {
        System.out.println(s);//hello
        for (int i : a) {
            System.out.println(i);//1,2,3
        }
    }
}
//结果:hello	1	2	3

递归

方法自己调自己,容易发生内存溢出

递归结构
  • 递归头:什么时候不调用自己,没有头,将死循环
  • 递归体:什么时候调用自己
public class Test {
    public static void main(String[] args) {
        System.out.println(test(3));
    }
    //求阶乘:3的阶乘 = 3*2*1 = 6
    public static int test(int a) {
        if (a == 1) {
            return 1;
        } else {
            return a * test(a - 1);
        }
    }
}
//结果:6
posted @   jpy  阅读(24)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示