1、String类型
1、String是引用类型, 是核心api类对象,由抽象类加载器进行加载。
2、String是不能修改里面的数据的。
2、函数重载和函数重写
函数重载: 同一作用域相同的函数名、参数类型和个数,参数排布顺序不同就是函数重载, 他是在编译阶段就确定好的,也被称为静态绑定。
函数重写:函数体相同(函数名,参数类型和参数排布顺序相同),子类的返回值是父类的返回值的子类即为函数重写。权限修饰符也要一样。
由于在编译阶段无法确定具体行为,也就是调用父类的方法, 在运行阶段就会调用子类重写的方法。因此也被称为动态绑定。
Java这块我们可以通过@override校验重写是否成功, 如果重写失败会报错。
2.1 多态?
多态分为编译型多态和运行型多态。
编译型多态是在编译阶段确定好关系,运行时直接调用,例如函数重载
运行型多态是在运行阶段才确认好,例如函数重写。
多态实现的条件:1、子类继承父类, 2、子类完成父类方法重写, 3、通过父类去调用子类完成重写的方法。
多态的实现原理:1、多态是后期绑定的,也就是运行时才知道创建的是什么类型。
3、Java类的修饰符访问权限
4、什么叫JavaBean、Bean、PoJo、PO、DTO、VO?
4.1、PoJo是一个普通的类对象, 没有继承任何类,也不提供任何接口的对象, 只是提供一些简单的Set、Get方法。一般作为数据库接收对象的载体。他算是一种中间对象。
PoJo持久化之后就是PO对象(新增一些管理的entity属性和方法); PoJo在传输过程中转化为DTO; PoJo在表示层为VO
4.2、JavaBean是一种特殊的类,一般实现一些简单的功能,可被别的类使用复用方法或者加载别的应用程序当中。
JavaBean的要求:
1、这个类必须具有一个公共的(public)无参构造函数;
2、所有属性私有化(private);
3、私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一定的命名规范。
4、这个类应是可序列化的。(比如可以实现Serializable 接口,用于实现bean的持久性)
JavaBean是一种组件技术,就好像你做了一个扳手,而这个扳手会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳手扳、锤、撬等等),而这个扳手就是一个组件。
◇对于JavaBean,就是一个Java模型组件,他为使用Java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。
◇JavaBean可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本!
◇JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过内省机制发现和操作这些JavaBean 属性。
◇通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的。
◇JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。
4.3、Bean是一个可重复使用的组件所谓组件就是一个由可以自行进行内部管理的一个或几个类所组成、外界不了解其内部信息和运行方式的群体。使用它的对象只能通过接口来操作。
4.4、PO 将对象与数据库进行绑定,用对象来表示数据库。可以认为一个PO对象对应数据库中的一条记录。
4.5、DTO 是对PO对象数据的切割提取, 一般来说DTO中要包含很多数据库的属性,作为传输对象使用。
4.6 VO 不仅可以包含PO对象属性,还可以包含别的属性,对于VO一般存在Controller,Service, PO来说存在于Dao、Service中。 也就是说VO不牵扯数据库相关, PO不牵扯业务相关。DTO中间数据传输对象。
5、package、import
package是包管理,在代码首行,表示这个类位于哪个包下面,方便被其他包加载
import是导入别的包文件,调用别的包方法。
6、MVC设计模式
MVC是指 model、view、controller设计模式,model负责业务处理和数据库调用; view视图解析JSP给前端; controller用户请求处理。
7、Super和子类创建过程
super是子类对于父类方法和属性的调用
子类实例化创建首先会创建父类然后创建子类, 销毁的时候相反,先销毁子类的然后再销毁父类的。
8、==和equals区别
==是运算符, equals是方法
==可以比较基础数据类型,对于引用类型只会判断两者的地址值是否相同。
equals方法适用于引用类型的比较。
9、包装类与基础类型之间的转换
基础类型转化为包装类为装包, 反之为拆包,一般转化会自动的装包和拆包操作。
10、static修饰的属性
1、static可以修饰变量、方法、代码块、内部类。
2、static修饰的类里面的变量和方法是类共有的,在对象创建之前就存在,此时类里面被称为类变量。
3、对于对象中static属性访问, 通过类名.访问
4、static修饰的变量存放在方法区的静态域。
11、final关键字
1、final修饰类,这个类不能被继承
2、final修饰方法,这个方法不能被重写, 并且这个方法为非虚方法,在编译阶段确定。
3、final修饰变量,这个变量不能被修改。
final修饰的变量的赋值方式:
- 显示赋值
- 构造器赋值
- 代码块赋值
final修饰的内部属性必须在方法内赋值。
12、单例模式 - 饿汉模式和懒汉模式
单例模式: 关于这个类的使用都是使用同一个对象。
饿汉模式:程序启动时编译阶段就创建好对象,运行后使用这个类都是使用同一个对象。这样做是线程安全的,但是缺点是启动时间会变慢。
懒汉模式: 在运行阶段需要使用的时候才会创建,默认是没有线程安全的, 但是可以通过双判断和加锁进行判断保证线程安全。 弥补了饿汉模式的缺点-启动慢。
饿汉模式:
public class SingleObject {
//创建 SingleObject 的一个对象<br /> private static SingleObject _instance _= new SingleObject();//让构造函数为 private,这样该类就不会被实例化<br /> private SingleObject(){}//获取唯一可用的对象<br /> public static SingleObject getInstance(){<br /> return _instance_;<br /> }<br /> public void showMessage(){<br /> System._out_.println("Hello World!");<br /> }<br />}
懒汉模式:
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
13、函数式编程
