Java-方法
2021-06-04 15:03
标签:入栈 void 字节码 src 错误 内存溢出 写代码 erro 接口 Java-方法 标签:入栈 void 字节码 src 错误 内存溢出 写代码 erro 接口 原文地址:https://www.cnblogs.com/gmbjzg/p/14654933.html// 1.Java方法
public static void main (String args[]){
int res = sum(1, 2);
// int res = HelloWorld.sum(1, 2);
System.out.println(res);
}
// 求和
public static int sum(int a, int b){
return a + b;
}
注:
方法体中不能再定义方法(不能嵌套)
方法名命名规范
getData 驼峰命名
形参是局部变量
方法调用
类名.方法名()
如果是static方法, 类名可以省略(默认在当前类中检索)
在同一个作用域中, return后面不能编写代码
方法调用的时候是值传递
方法内存分配
1.方法在定义时, 不会分配内存空间。只有在调用的时候, 才会分配内存空间
2.在JVM中,内存主要划分为三个区
- 方法内存区
- 堆内存
- 栈内存
方法代码片段存储在方法区中(方法代码片段属于.class字节码文件的一部分)
- 方法区最先有数据, 方法可以重复被调用
- 每次调用该方法, 需要分配内存, 在栈区分配方法运行所需的内存空间(入栈), 方法执行结束之后, 该方法的内存空间会被释放(出栈)
- 局部变量在方法体中声明, 存储在栈中
// 2.方法重载机制(overload)
方法重载: 在同一个类中, 方法名相同, 参数不同
- 功能相似的函数, 尽可能让方法重名(对外统一接口)
- 方法名相同, 参数不同
- 方法重载与返回值类型无关, 只与方法名和参数有关
public static void main (String args[]){
int res1 = HelloWorld.sum(1, 2);
double res2 = HelloWorld.sum(1.0, 2.0);
System.out.println(res1);
System.out.println(res2);
}
// 方法1
public static int sum(int a, int b){
return a + b;
}
// 方法2
public static double sum(double a, double b){
return a + b;
}
// 3.方法递归
方法自己调自己, 递归函数非常占用栈内存, 尽量不使用
栈内存溢出错误: java.lang.StackOverflowError
public static void main (String args[]){
int res = sum(10);
System.out.println(res);
}
public static int sum (int n1) {
if (n1 == 1) {
return n1;
}
return n1 + sum(n1 - 1);
}
上一篇:【论文阅读】Stanza: A Python Natural Language Processing Toolkit for Many Human Languages[ACL2020]
下一篇:C语言网络编程——TCP