---恢复内容开始---

间歇性混吃等死,持续性踌躇满志系列-------------第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. }

运行结果图

JAVA进阶17的更多相关文章

  1. JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法

    JAVA进阶之旅(一)--增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法 学完我们的java之旅,其实收获还是很多的,但是依然还有很 ...

  2. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

  3. Java进阶(五十三)屡试不爽之正则表达式

    Java进阶(五十三)屡试不爽之正则表达式 在线测试网址: http://tool.oschina.net/regex/# 上面的在线测试网址,含有正则表达式的生成,非常实用.大家共勉之! 匹配中文: ...

  4. java进阶视频分享

    更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...

  5. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  6. [.net 面向对象程序设计进阶] (17) 多线程(Multithreading)(二) 利用多线程提高程序性能(中)

    [.net 面向对象程序设计进阶] (17) 多线程(Multithreading)(二) 利用多线程提高程序性能(中) 本节要点: 上节介绍了多线程的基本使用方法和基本应用示例,本节深入介绍.NET ...

  7. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  8. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  9. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

随机推荐

  1. CentOS7.x安装MySQL5.7.25

    mysql 5.7下载地址 社区版下载地址:https://dev.mysql.com/downloads/mysql/ 可能会有变动 找到5.7版本, 注:源码安装需要用到下面的包,可以先忽略,我安 ...

  2. EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public?

    前言 不知我们是否思考过一个问题,在关系映射中对于导航属性的访问修饰符是否一定必须为public呢?如果从未想过这个问题,那么我们接下来来探讨这个问题. EF 6.x和EF Core 何种情况下必须配 ...

  3. vue路由传对象刷新会报错,数据丢失,用json字符串解决

    变成json字符串,且加密 this.$router.push({name: response.body.PowerList[0].opPowerurl ,query :{ all: encodeUR ...

  4. windows 分页缓冲池 非分页缓冲池

    最近在windows server 2012机器上在做性能测试时,发现8G物理内存,内存使用率占到了90%多,在“进程”列表中所有进程内存相加才2个多G,同时任务管理器->“性能”标签一项中,非 ...

  5. SpringCloud---熔断降级理解、Hystrix实战(五)

    SpringCloud---熔断降级理解.Hystrix实战(五) https://www.cnblogs.com/qdhxhz/p/9581440.html https://blog.csdn.ne ...

  6. windows系统下的特殊目录导致的FileNotFoundException

    环境:下面只有JDK(内含jre),没有外在的jre 读取的两个文件都是存在的,只是文件名不同 运行结果1 运行结果2 切换JDK 运行结果3: 运行结果4: 请留意:C:\windows\syste ...

  7. 五、Redis持久化配置

    转载:[https://www.cnblogs.com/xingzc/p/5988080.html] Redis提供的持久化机制(RDB和AOF) Redis提供的持久化机制 Redis是一种面向“k ...

  8. [UVa-437] Color Length

    无法用复杂状态进行转移时改变计算方式:巧妙的整体考虑:压缩空间优化时间 传送门:$>here<$ 题意 给出两个字符串a,b,可以将他们穿插起来(相对位置不变).要求最小化ΣL(c),其中 ...

  9. P3709 大爷的字符串题 (莫队)

    题目 P3709 大爷的字符串题 题意:求\([l,r]\)中众数的个数. 解析 维护两个数组: \(cnt[x]\),数\(x\)出现的次数. \(sum[x]\),出现次数为\(x\)的数的个数. ...

  10. 【BZOJ4028】[HEOI2015]公约数数列(分块)

    [BZOJ4028][HEOI2015]公约数数列(分块) 题面 BZOJ 洛谷 题解 看一道题目就不会做系列 首先\(gcd\)最多只会有\(log\)种取值,所以我们可以暴力枚举出所有可能的\(g ...