1.学习java中简单的分层设计模式
从上而下包括程序入口,界面显示层,业务层,domain/model(今天学习的系统仅包含数据层),同时还包括工具类。利用该设计模式设计了一个简单的房屋出租系统。
2.学习java中static修饰符的用法
(1)类变量/静态变量/静态属性
用static修饰符对类中定义的属性进行修饰,该属性称为类变量,类变量在java8以前存放在方法区中的静态域里,java8以后静态域存放在堆中class对象里。类变量只有在类加载的时候被定义一次,并且可以被该类的所有对象调用和修改。相较而言普通变量/非静态变量/非静态属性只有在创建一个新对象时才会被定义。
(2)类方法/静态方法
用static修饰符对类中的方法进行修饰,该方法称为类方法。类方法的调用不需要创建新的对象,只需类名即可调用,也就是说只需要加载类就可以调用类方法。注意类方法中只能调用静态变量和静态方法,如果确实想调用非静态变量的话需要创建一个新对象通过新对象调用。在类方法中this,super关键字,都不可以调用,它们是针对对象而言的。相较而言非静态方法可以调用普通成员和静态成员。但是想要在其它类中使用非静态方法需要创建一个对象进行调用。
3.main方法的使用
(1)main方法在虚拟机中被调用。
(2)main方法的调用不需要创建对象,所以要加static修饰符进行修饰。
(3)main方法中的String[] args 数组是在保存执行java命令时传给该方法的字符串参数。
4.代码块
(1)代码块可以看作没有方法名和输入输出的方法,也就是只包含方法的方法体部分,代码块也可以加static修饰符。静态代码块和静态变量的加载优先级相同,普通代码块和普通变量的加载优先级相同。
(2)对于一个父类和一个子类,都包含静态变量,静态代码块,普通变量,普通代码块。那么在创建对象时,调用顺序如下:
(a)父类静态变量和静态代码块,具体顺序看二者定义的顺序。
(b)子类静态变量和静态代码块,具体顺序同上。
(c)父类普通变量和普通代码块,具体顺序同上。
(d)父类构造器。
(e)子类普通变量和普通代码块,具体顺序同上。
(f)子类构造器。
5.单例设计模式
单例设计模式是指利用一定的设计方法使得在整个软件系统中只能存在一个对象实例,常见的单例设计模式有饿汉式和懒汉式。
(1)饿汉式
饿汉式的方法是先私有化构造器,以防创建新对象,然后在类的内部私有化的创建一个静态的对象,最后给出一个公有的静态方法以调用该对象。对于饿汉式,不管其他类中是否调用该对象,该对象都会被调用,所以被称为饿汉式,饿汉式可能造成资源浪费。
(2)懒汉式
懒汉式方法也是先私有化构造器,然后在类的内部私有化的定义静态对象(并不立即创建对象),最后给出公有的静态方法,在该方法中判断所定义的对象是否为空,是则创建新对象,否则不作操作,这样只有该方法被调用时才创建对象,不会造成资源浪费。但是懒汉式的判断过程可能在多线程任务时造成竞争现象。
6.final关键字
final关键字可以修饰类,方法,变量;
(1)final修饰类时该类不能被继承,用final字符修饰的类一定不存在子类。
(2)final修饰方法时,该方法不能被重写。
(3)final修饰属性时,该属性不能被修改,也就是常量了,常量命名全部大写,不同单词用_隔开。这里的属性可以是全局属性也可以是局部属性。使用final修饰属性时必须赋初值,如果不是静态属性,可以在定义时,代码块,构造器中赋值,如果是静态属性,只能在定义时和代码块中赋值。
(4)final修饰符和static修饰符搭配使用修饰属性效率更高,调用该属性时不会导致类加载。
(4)常见的final类:包装类:Integer,Float,Double,Boolean(将基本数据类型包装成对象)。