图片 3

Java实例 Part5:面向对象入门

Posted by

目录

  汉诺塔问题的描述如下:有3根柱子A、B和C,在A上从下往上按照从小到大的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子。本实例实现了3阶汉诺塔问题的求解,实例运行效果如图

  • Part5:面向对象入门
    • Example01:成员变量的初始化值
    • Example02:单例模式的应用
      • —–懒汉式
      • —–饿汉式
    • Example03:汉诺塔问题的求解
    • Example04:两只完全相同的宠物并得出对象的哈希码

图片 1

Part5:面向对象入门


@
***

  为了将第N个盘子从A移动到C,需要先将第N个盘子上面的N-1个盘子移动到B上,这样才能将第N个盘子移动到C上。同理,为了将第N-1个盘子从B移动到C上,需要将N-2个盘子移动到A上,这样才能将第N-1个盘子移动到C上。通过递归就可以实现汉诺塔问题的求解,其最少移动次数为2n-1。

Example01:成员变量的初始化值

运行结果:
图片 2
代码实现:

public class Example01 {    //声明变量    private byte b;    private int i;    private short s;    private long l;    private char ch;    private float f;    private double d;    private boolean bool;    private String str;    public static void main(String[] args) {        Example01 example = new Example01();        System.out.println("byte类型的初始值:"+example.b);        System.out.println("int类型的初始值:"+example.i);        System.out.println("short类型的初始值:"+example.s);        System.out.println("long类型的初始值:"+example.l);        System.out.println("char类型的初始值:"+example.ch);        System.out.println("float类型的初始值:"+example.f);        System.out.println("double类型的初始值:"+example.d);        System.out.println("boolean类型的初始值:"+example.bool);        System.out.println("String类型的初始值:"+example.str);    }}
  • 要点:对于引用类型的变量,在使用之前需要进行初始化,否则会抛出NullPointerException。
    ***

 

Example02:单例模式的应用

  编写类HanoiTower,在该类中包含了两个方法,moveDish()方法使用递归来实现问题的求解,main()方法用来进行测试。代码如下:

—–懒汉式

运行结果:
图片 3
实现代码:

class Single {    private static Single s = null;    private Single(){}    public static Single getInstance(){        if (s == null){            s = new Single();            System.out.println("---我是懒汉!");        }        return s;    }}
  • 懒汉式在方法中创建这个类的对象,调用效率不高,但能延时加载。

 

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注