JAVA进阶17
---恢复内容开始---
间歇性混吃等死,持续性踌躇满志系列-------------第17天
1、递归结构
递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是自己就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。
递归结构包括两个部分
①定义递归头。解答:什么时候不调用自身方法。如果没有头,会陷入死循环,就是递归的条件
②递归体。解答:什么时候需要调用自身方法
1 public class TestRecursion01 { 2 public static void main(String[] args) { 3 long d1 = System.currentTimeMillis(); 4 System.out.printf("%d阶乘的结果:%s%n", 15, factorial(15)); 5 long d2 = System.currentTimeMillis(); 6 System.out.printf("递归费时:%s%n", d2 - d1); 7 } 8 9 //求阶乘的方法 10 static long factorial(int n) { 11 if (n == 1) {//递归头 12 return 1; 13 } else { 14 //递归体 15 return n * factorial(n - 1); //n!=n*(n-1) 16 } 17 } 18 }
运行结果图
2、Java的垃圾回收机制
①发现无用对象
②回收无用对象占用的内存空间
相关算法:引用计数法、引用可达法
3、静态初始化块
1 public class TestRecursion01 { 2 int id; 3 String name; 4 String pwd; 5 static String company; 6 7 static { 8 System.out.println("执行类的初始化工作"); 9 company = "后天科技"; 10 printCompany(); 11 } 12 13 public static void printCompany() { 14 System.out.println(company); 15 } 16 17 public static void main(String[] args) { 18 } 19 }
运行结果图
4、方法重写
1 package cn.oob; 2 3 public class TestOverride { 4 public static void main(String[] args) { 5 Hourse h = new Hourse(); 6 h.run(); 7 } 8 } 9 10 class Vehicle{ 11 public void run(){ 12 System.out.println("跑》。。。"); 13 } 14 public void stop(){ 15 System.out.println("停。。。"); 16 } 17 } 18 19 class Hourse extends Vehicle{ 20 public void run(){ 21 //方法重写 22 System.out.println("慢慢跑。。。"); 23 } 24 }
运行结果图
5、super父类对象的引用
1 package cn.oob; 2 3 public class TestOverride { 4 public static void main(String[] args) { 5 new ChildClass().f(); 6 } 7 } 8 9 class FatherClass { 10 public int value; 11 12 public void f() { 13 value = 100; 14 System.out.println("FatherClass.value=" + value); 15 } 16 } 17 18 class ChildClass extends FatherClass { 19 public int value; 20 21 public void f() { 22 //调用父类对象的普通方法 23 super.f(); 24 value = 200; 25 System.out.println("ChildClass.value=" + value); 26 System.out.println(value); 27 //调用父类对象的成员变量 28 System.out.println(super.value); 29 } 30 }
运行结果图