摘要:
一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢? 概括地说来,JVM初始运行的时候都会分配好Metho 阅读全文
摘要:
模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,例如想要泡一杯茶或者一杯咖啡,第一步都是将水煮沸,第二部是加入咖啡或者茶,第三部就 阅读全文
摘要:
java是如何在让我们在运行时识别对象和和类的信息的。主要有两种方式:一种是传统的RTTI,他假定我们在编译时已经知道了所有的类型信息,另一种是反射机制,它允许我们在运行时发现和使用类的信息 RTTI 运行结果 在这个例子中,当把Shap对象放入List<Shape>的数组时会向上转型,但在向上转型 阅读全文
摘要:
默认值赋值注意点: 1.只有当一个数组成员严格等于undefined,默认值才会生效。 2.默认值可以引用解构赋值的其他变量,但该变量必须已经声明。 变量的解构注意点 1.由于数组本质是特殊的对象,因此可以对数组进行对象属性的解构。 2.解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为 阅读全文
摘要:
1.饿汉式 提供了一个静态实例并返回给调用者 饿汉模式是最简单的一种实现方式,饿汉模式在类加载的时候就对实例进行创建,实例在整个程序周期都存在。优点是只在类加载的时候创建一次实例,不会存在多个线程创建多个实例的情况,避免了多线程同步的问题。缺点是即使这个单例没有用到也会被创建,而且在类加载之后就被创 阅读全文
摘要:
1.String 对象是不可变的,每个试图修改String值得方法,实际上都是创建了一个全新的String对象。 运行结果 2.重载+与StringBuilder String对象是不可变的,所以在字符串实现+的时候,编辑器创建了一个StringBuilder对象,用以构造最终的String,并且为 阅读全文
摘要:
1.创建自定义异常 要自己定义异常类,必须从已有的异常类继承 运行结果 也可以为异常类定义一个接受字符串参数的构造器 运行结果 2.异常与记录日志 运行结果 3.使用finally进行清理 对于一些代码,可能会希望无论try块中的一场是否抛出,他们都能得到执行,这通常适用于内存回收之外的情况。可以再 阅读全文
摘要:
接口众所周知就是特定类的共同特征,指明了一个类必须做什么和不能做什么。因为java是单继承,所以多实现的接口弥补了这一局限性,接口很大程度上也实现了解耦。 解耦:如果一个方法操作的是类,那么你只能使用这个类及其子类,如果想要将这个方法应用于不在继承结构中的某个类,那么就无法实现这一操作,接口可以在很 阅读全文
摘要:
上篇说道java的简单工厂模式,随着业务的复杂和需求的变化,简单的工厂模式已经不能满足我们的需求。 工厂方法模式就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。例如上一篇的例子中调用者既不输入man也不 阅读全文
摘要:
在工作中经常会用到的一种开发模式,开发的时候也接触过,系统的写一下实现。 在我的理解,简单工厂的模式就是先抽象出具有共性的类需要的方法,同一特性的类实现接口的方法,根据他们之间的差异做不同的处理。创建一个工厂类,根据不同的选择创建不同的对象。工厂类并不关心怎么去实现,只需要知道传入工厂类的参数。如果 阅读全文