方法
定义
- 修饰符(可选的)
- public
- static
- final
- 返回值类型
- 方法名
- 参数
- 形参:定义方法时
- 实参:调用方法时传递的参数
- 方法体
调用
static是跟随类的,所以静态方法不能直接调用非静态
非静态方法属于对象,new 实例化之后才存在
静态调用静态
- 同类:直接调用
- 不同类:类名.方法名
静态调用非静态
- 对象.方法名
非静态调用静态
- 同类:直接调用
- 不同类
- 类名.方法名
- 对象.方法名
非静态调用非静态
- 同类:直接调用
- 不同类:对象.方法名
值传递
实参传递给形参的是值 形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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