1.学习了递归
按照b站韩顺平老师的顺序,在方法学习后就开始了递归,我对递归的理解肯能有些片面,我认为递归似乎就是“方法套方法”,即return返回的时候再次调用方法,一直循环直到达到目的。基本理解了工作原理后也是练习了些简单的练习,比如简单的阶乘问题,
//import java.util.Scanner;
public class factorial {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Scanner scanner=new Scanner(System.in);
//int n=scanner.nextInt();
T t=new T();
int a=t.test(5);
System.out.println(a);
}
}
class T{
public int test(int n) {
if(n==1) {
return 1;
}else {
return test(n-1)*n;
}
}
}
这是韩顺平老师讲课的图解,有些令人费解,但还是能接受。
这是应该是最简单的递归,此外还有斐波那契函数(个人觉得有点费解了),因为这似乎是一种逆向思维的方式,(好像叫什么“回溯”)代码如下(求第n个数):
import java.util.Scanner;
public class recursion {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("第几个数?");
int number=scanner.nextInt();
Fibonacci f=new Fibonacci();
System.out.println(f.number(number));
}
}
//斐波那契数列为1 1 2 3 5 8 ....(下一个数是前两个数字之和)
class Fibonacci{
public int number (int n) {
if(n==1 || n==2) {
return 1;
}else {
return number(n-1)+number(n-2);
}
}
}
...在此之后还有许多更难的问题,比如迷宫,汉诺塔,八重宫......由于学习进度的限制,在加上这些问题比较难理解并且较花费时间,我便暂时跳过这些问题了(以后还会回来练习)
2.方法重载
“允许同一个类中定义多个同名方法,只要它们的形参列表不同即可。如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,这种情况被称为方法重载(overload)。”
我个人理解就是整几个名字一样的方法,但是里面的形参不一样,根据我输入的数据自动找到合适的方法。。。
3.可变参数
由于我们不确定需要几个形参,于是就有了可变形参。形式为(如int...xx)
此外可变形参的使用和数组一样,用for循环遍历
比如我要计算靓仔的总分,可以输入n个数
public static void main(String[] args) {
// TODO Auto-generated method stub
B t=new B();
String x=t.b("靓仔de总分"+" ",90.0 ,30.0);
System.out.println(x);
}
}
class B{
public String b(String a,double...nums) {
double sum=0;
for(int i=0;i<nums.length;i++) {
sum+=nums[i];
}
return a+sum;
}
}
4.作用域和this
全局变量(属性)和局部变量的作用范围
this的类型:哪个对象调用就是哪个对象的引用类型
5.构造器
感觉构造器就是方法,对变量进行初始化(咱也不懂初始化啥意思,反正就那种感觉能get到)
总之,就是进度似乎有点落后........
(月底考核..555)