摘要: 递归就是自己调自己。 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 递归结构包括两个部分: 1. 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。 2. 递归体:什么时候需要调用自身方法。 阅读全文
posted @ 2020-04-22 12:16 hellowen2020 阅读(113) 评论(0) 推荐(0)
摘要: JDK1.5开始,Java支持传递同类型的可变参数给一个方法。 在方法声明中,在指定参数类型后加一个省略号(...)。 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。 例如: 阅读全文
posted @ 2020-04-22 11:44 hellowen2020 阅读(133) 评论(0) 推荐(0)
摘要: λ表达式是一个可传递的代码块,可以执行一次或者多次。 基本形式:参数 表达式 例如: 字符串按长度排序: 2. 即使没有参数,仍然要包含空括号。 3. 如果可以推导出参数类型,则可以忽略其类型不写。 4. 如果表达式只有一个参数,且这个参数的类型可以推导出来,则可以忽略小括号。 5. λ表达式的返回 阅读全文
posted @ 2020-04-21 19:28 hellowen2020 阅读(607) 评论(0) 推荐(0)
摘要: 很多时候我们需要把基本数据类型转换为对象类型: 我们把基本数据类型对应的对象类型称作这个基本数据类型的 包装器 (wrapper)。 基本数据类型转换为对应的对象类型的过程叫 装箱 ,把包装器转换为基本数据类型类型的过程叫 拆箱 。 注意:↓ 包装器由于其不可变的属性,编译器优化会让他们去引用同一个 阅读全文
posted @ 2020-04-21 17:28 hellowen2020 阅读(123) 评论(0) 推荐(0)
摘要: 由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类。(抽象方法的类必须也是抽象的) 抽象方法充当着占位的角色。它们在子类中可以具体实现。扩展抽象类可以有两种选择。一种是在子类中保留抽象类中的部分或所有抽象方法仍未实现,这样子类必须也标记为抽象的;另外就是定义全部抽象方法,这样 阅读全文
posted @ 2020-04-21 17:23 hellowen2020 阅读(110) 评论(0) 推荐(0)
摘要: 1. 修饰局部变量 2. 修饰类中的字段 3. 修饰类:有时候我们可能希望阻止人们利用某个类定义子类。不允许扩展的类被称为final类。 4. 修饰方法:子类就不能覆盖这个方法。 注意:final类的所有方法自动都是final的 阅读全文
posted @ 2020-04-21 17:20 hellowen2020 阅读(144) 评论(0) 推荐(0)
摘要: 我们假设要调用a.m(args)方法,并且假定a为类C的对象。 1. 编译器首先查看对象声名的类型和方法名。这里需要注意方法重载(Overload),编译器会一一列举C类中所有的名字为f的方法,以及C的超类中名字为f的方法(可以访问的,不能访问的不算,比如超类的private方法)。至此编译器知道了 阅读全文
posted @ 2020-04-21 17:17 hellowen2020 阅读(379) 评论(0) 推荐(0)
摘要: 对象的构造 过程: 1. 类的加载(装载、链接、初始化),类被加载到内存中之后,就可以创建对象了。 2. 这个过程中new操作符用于申请内存。 3. 申请内存之后,对象的字段就会分配空间。 4. 分配内存之后,内存中存储默认值,数值型为0,boolean为false,对象类型null。 5. 然后从 阅读全文
posted @ 2020-04-21 17:16 hellowen2020 阅读(133) 评论(0) 推荐(0)
摘要: 静态字段 如果将一个字段定义为static,每个类只有一个这样的字段。而对于非静态字段(实例字段),每个对象都有自己的一个副本。 上面的代码,每一个Employee对象都有一个id字段,但这个类所有的实例将共享一个nextId字段。 例如有100个Employee对象,那么讲有100个id的储存空间 阅读全文
posted @ 2020-04-21 17:15 hellowen2020 阅读(213) 评论(0) 推荐(0)
摘要: 模拟一副扑克牌(不包括大小王),然后写一个方法,模拟洗牌行为。再写一个方法,将扑克牌发给4个玩家,最后输出每个玩家手里拿到的12张扑克牌。 阅读全文
posted @ 2020-04-21 16:17 hellowen2020 阅读(708) 评论(0) 推荐(0)