第九天笔记
1、方法重载
1.1如下方代码:(以各种类型的两数相加为列子)
未进行方法重载:
public class FangF{
public static void main(String[] args){
System.out.println(sumInt(10,20));
System.out.println(sumLong(10L,20L));
System.out.println(sumDouble(10.0,20.3));
}
//以int类型的相加
public static int sumInt(int a,int b){
int sum;
sum=a+b;
return sum;
}
//以long类型的相加
public static long sumLong(long a,long b){
long sum;
sum=a+b;
return sum;
}
//以double类型的相加
public static double sumDouble(double a,double b){
double sum;
sum=a+b;
return sum;
}
}
进行方法重载:
public class FangF{
public static void main(String[] args){
System.out.println(sum(10,20));
System.out.println(sum(10L,20L));
System.out.println(sum(10.0,20.3));
}
//以int类型的相加
public static int sum(int a,int b){
int sum;
sum=a+b;
return sum;
}
//以long类型的相加
public static long sum(long a,long b){
long sum;
sum=a+b;
return sum;
}
//以double类型的相加
public static double sum(double a,double b){
double sum;
sum=a+b;
return sum;
}
}
仔细看看,然后比较两个代码的不同。。。
1.2、什么时候使用方法重载?
在同一个类里面,如果“功能一”和“功能二”它们的功能是相似的,
那么可以考虑它们的方法名一致,这样代码既美观又便于后期的代码编写(容易记忆,方便使用)
注意:方法重载overload不能随便使用,如果两个功能压根不相干,不相似
根本没关系,此时如果使用重载机制,会导致编码更麻烦。
1.3、什么时候代码会发生方法重载?
条件一:在同一个类中
条件二:方法名相同
条件三:参数列表不同
参数的个数不同算不同
参数的类型不同算不同
参数的顺序不同算不同
1.4、方法重载与返回值类型无关与修饰符列表无关
2、代码的简易封装
第一步:创建一个文件夹,写一个java代码文件
第二步:编译成功生成class字节码文件
第三步:把class字节码文件拷贝至想要使用该方法的文件夹
建议:周一时自己写一个类,利用方法重载和封装使得输出不用再写(System.out.println())那么长
建议观看java老杜的视频使用,链接如下:
https://www.bilibili.com/video/BV1mE411x7Wt?p=203
3、方法递归
3.1、什么是方法递归?
方法自己调用自己,就是递归
3.2、当递归没有结束条件时,一定会发生栈内存溢出错误
所以必须要有结束条件
3.3、如果有结束条件也可能会发生栈内存溢出错误,
原因:递归太深
建议:尽量少使用递归,因为会进行压栈造成空间大量浪费,能用循环解决的问题为什么要用递归呢?
可以联系一下数据结构:空间复杂度。(在实际开发中几乎没有递归)
循环效率高,栈内存小,而递归可能会使JVM挂掉