java中的方法到底是什么?该怎么使用?方法的内存是怎样使用的?详解

//(1)方法的本质及定义

/*
 	1.方法的本质:
 		方法就是一段代码片段,并且这段代码可以完成某个特定的功能,并且可以被重复的使用。
 	
 	2.方法的定义:
 		[修饰符列表] 返回值类型 方法名(形式参数列表){
 			方法体;
 		}
 		2.1、关于修饰符列表
 			*可选项,非必须
 			*目前统一为:public static【以后讲】
 			*方法的修饰符列表中有static关键字的话,怎么调用
 				-类名.方法名(实际参数列表);
 				-引用.方法名(实际参数列表);【可以调用,但实际执行时和引用指向的对象无关,会出现警告】
 		2.2、返回值类型
 			*方法完成某个特定的功能后返回最终执行结果,执行结果可能是一个具体的数据,数据的类型就是返回值类型
 			*没有返回值用void,不过不可以用【return 字面值;】,但可以用【return;】结束当前方法
 			*如果有返回值,在方法体里要写【return 字面值;】,并且这个值要和方法的返回值类型一致
 			*只要使用了return方法就会结束
 		2.3、方法名:
 			*合法的标识符
 			*最好是动词
 			*首字母小写,后面每个单词首字母大写
 			*见名知意
 		2.4、形式参数列表:简称形参
 			*形参是局部变量:int a;double b
 			*形参可以有多个,用逗号隔开
 			*方法在调用的时候,是寄给这个方法传递的真实数据被称为:实际参数,简称实参
 			*实参列表和形参列表数量和类型必须相同
 	3.方法怎么调用:
 		方法之定义不去调用时不会执行的,只有在调用的时候才会执行
 		语法规则(当方法的修饰符列表中有static时):
 			类名.方法名(实参列表);	//表示调用某个类的某个方法,传递这样的实参
 			方法名(实参列表);		//表示调用当前类下的某个方法
 */
 
 //(2)方法的内存
 
 /*
 	1.方法只定义不调用是不会执行的,并且在JVM中也不会给该方法分配内存空间
 	
 	2.在JVM内存划分上有这样三块主要的内存空间:
 		*方法区内存
 		*堆内存
 		*栈内存
 	
 	3.关于栈数据结构
 		*栈:stack,是一种数据结构
 		*数据结构反映的是数据的存储形态
 		*数据结构是独立的学科
 		*精通数据结构和算法!!!!!!!!!
 		*java程序员在不精通的前提下也可以进行编程,因为java有一套庞大的类库
 		相当于别人写好了你直接用【javase中的集合章节使用了大量的数据结构】
 		*常见的数据结构
 			-数组
 			-队列
 			-栈
 			-列表
 			-二叉树
 			-哈希表/散列表
 			-……
 	
 	4.方法代码片段
 		*方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候将其放到了方法区中。
 		所以JVM中的三块主要的内存空间中方法区内存最先有数据,其中存放的是代码片段
 		*代码片段虽然在方法区内存中只有一份,但是可以重复调用,每一次调用都会在栈内存中分配独立的内存空间
 		方法被调用时,会在栈中发生压栈动作,执行结束后,内存被全部释放,此时发生弹栈动作
 			-压栈:给方法分配内存
 			-弹栈:释放内存
 	
 	5.局部变量在【方法体】中声明,局部变量运行阶段的内存在栈中分配
 	
 	6.方法的执行内存分析
 		*参数传递的是变量中保存的值,不传递地址
 		
 */
 
//公开的	定义类	类名
public class Method {//表示定义一个公开的类,起名Method,由于是公开的类所以源文件名必须是Method
	//类体
	//类体中除了声明变量外不能直接编写java语句
	//类体中有方法
	//公开的	静态的  无返回值  主方法  形参列表:(引用数据类型  局部变量名)
	public static void main(String[] args) {//主方法固定编写形式,是程序的入口
		//到这里main方法暂停执行sunInt方法,执行完成后会回来继续执行下一行代码
		Method.sumInt(10,20);//调用方法,传递两个实参
		int a=100,b=200;
		Method.sumInt(a,b);
		sumInt(b,a);//好像也可以
		System.out.println(addInt(a,b));
		int c = addInt(a,b);
		System.out.println(c);
		//求和
		int n = -19;
		//循环
		int value = sum(n);
		System.out.println(value);
		//递归
		if(n>=0) {
		int value1 = sum1(n);
		System.out.println(value1);
		}
		else
			System.out.println("输入有误,程序结束!");
	}
	//修饰符列表	返回值类型  方法名	形参列表
	public static void sumInt(int a,int b) {//自定义方法
		int c = a+b;
		System.out.println(a+"+"+b+"="+c);
	}
	public static int addInt(int a,int b) {
		return (a<b?a+b:b);
	}
	public static int sum(int n) {
		int i,sum=0;
		for(i=0;i<=n;i++) {
			sum+=i;
		}
		return sum;
	}
	public static int sum1(int n) {
		if(n==1)
			return 1;
		else if(n==0)
			return 0;
		//else if(n>1) {
		else {
			//int sum=n+sum(n-1);
			//return sum;
			return n+sum(n-1);
		}
	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值