Java-方法

2021-06-04 15:03

阅读:762

标签:入栈   void   字节码   src   错误   内存溢出   写代码   erro   接口   

// 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);
}

技术图片

Java-方法

标签:入栈   void   字节码   src   错误   内存溢出   写代码   erro   接口   

原文地址:https://www.cnblogs.com/gmbjzg/p/14654933.html


评论


亲,登录后才可以留言!