zoukankan      html  css  js  c++  java
  • 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 }
    View Code

    运行结果图

    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 }
    View Code

    运行结果图

    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 }
    View Code

    运行结果图

    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 }
    View Code

    运行结果图

  • 相关阅读:
    [leetcode]Interleaving String
    [leetcode]Scramble String
    [leetcode]Divide Two Integers
    [leetcode]Implement strStr()
    python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
    GitHub新手快速入门日常操作流程
    smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5错误解决办法
    wamp中修改后mysq数据库l闪退无法登陆解决办法
    运行python代码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 91: ordinal not in range(128)的解决办法
    测试人员如何搭建Selenium-Grid2环境(参考Java)
  • 原文地址:https://www.cnblogs.com/Anemia-BOY/p/10650784.html
Copyright © 2011-2022 走看看