1.方法的产生
* 不好维护,代码执行效率低,重复性大
* 方法
2.什么是方法?
.方法就是把一堆需要反复执行的业务逻辑代码封装起来,当程序需要使用这段代码的时候,我们直接调用即可
* 就不需要反复的写这段代码了
*
3.使用方法的好处?
* 提高代码重用性,维护性,可读性好,执行效率高
* 映射到java程序中
* 材料:参数
* 产出物:返回值
4.怎么定义一个方法
* 1.public 访问修饰符(权限修饰符)-公共的,在当前项目下的任何地方都可以访问
* private:私有的,只能在当前类下面访问
* protected:受保护的,在同一个包或者其他派生类中可以访问
* default:缺省,只能在当前包下面进行访问
*
* 2.[static]
* 3.void 方法返回值类型:方法执行完成以后最终产生的结果是什么类型的
* 4.main 方法名:自己定义的名字,首字母小写第二个大写,驼峰式命名法,getStudentById
* 5.()形参列表,用于接收调用者实际传过来的数据,由多个形参组成的列表叫做形参列表
* 6. {逻辑代码块
* return 返回值,(1)把方法最终处理的结果返回给调用者 (2)结束当前方法
* 注意:返回的数据类型必须要和返回值类型一致
*
* }
新建 Class Demo01
//一个静态方法里面只能调用静态方法或者静态变量
public static void main(String[] args) {
//调用方法
//定义一个变量去接收方法的返回值
//注意:变量的数据类型必须和方法的返回值类型一致
int result=sum(3,5);
System.out.println("a+b的和:"+result);
}
/**
* 计算a+b的和
* 返回值类型
* 方法名
* 形参
*/
public static int sum(int a,int b){
System.out.println("方法执行了");
int result=a+b;
return result;
}
5.方法返回值和方法的命名
*(1)无返回值方法
* 访问修饰符[static] void 方法名 (形参列表){
方法体
return;可写可不写,一般不写
* }
* (2)方法名
* 自定义名字,首字母小写,驼峰式命名法,getStudentById
新建 Class Demo02
public static void main(String[] args) {
studyHard();
}
public static void studyHard(){
for(int i=1;i<=10;i++){
System.out.println("好好学习"+i);
}
}
6.参数传递的规则
*参数传递:调用者在调用方法的时候,向方法内传入数据的一系列操作
形参:在【定义】方法的时候,写在小括号里面的参数,作用是接收调用者传递的数据
实参:在【调用】的时候,真正传递到方法的数据
*参数传递(两种):
(1)基本数据类型(以及String):传递值本身,形参的操作不会影响实际的参数
(2)引用数据类型(除了String以后):传递堆里面的地址值,形参的操作会影响实际的参数
新建 Class Demo03
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println("a="+a);
System.out.println("b="+b);
change(a,b);
System.out.println("=================");
System.out.println("a="+a);
System.out.println("b="+b);
}
//定义一个方法,把形参扩大十倍。
public static void change(int a,int b){
a*=10;
b*=10;
System.out.println("a="+a);
System.out.println("b="+b);
}
7.参数传递的原理
*基本数据类型传递的原理?
(1)方法区:存放的字节码文件.class文件
(2)mian方法进栈
(3)局部变量进栈
(4)垃圾回收机制让方法出栈
*引用数据类型传递的原理?
(1)方法和局部变量进栈
(2)修改相应地址下的数据
8.方法重载
*对于类似的累加操作,因为形参列表不同,所以定义了多个方法名
(1)麻烦
(2)调用者需要记住多个方法名,参数过多可能会出现电用错误的情况
*什么是方法重载?
方法名必须相同,参数列表必须不同,和参数名没有关系
(1)参数列表的个数不同
(2)参数类型不同
(3)参数类型的顺序不同
注意:方法重载和返回值类型无关
注释
2020.08.04java实训第七次课