看看一年能够积攒多少有用的java知识
知识点一:implements和extends的区别
implements
关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法。实现一个接口,必须实现接口中的所有方法。使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)
接口优势为:“接口+实现”最常见的优势就是实现类和接口分离,在更换实现类的时候,不用更换接口功能。
还有几点需要注意:
- 接口可以被多重实现(implements),抽象类只能被单一继承(extends)
- 接口只有定义,抽象类可以有定义和实现
- 接口的字段定义默认为:public static final, 抽象类字段默认是”friendly”(本包可见)
1 | //单一实现两个接口 Bread、Milk |
extend
关键字extends,表示对父类的继承,可以实现父类,也可以调用父类初始化。而且会覆盖父类定义的变量或者函数。在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。
在继承关系中,父类的成员变量、局部变量、方法被隐藏被子类常常覆盖,这时需要引用父类成员变量、局部变量、方法。super.变量名,super.方法名,super.父类的构造方法;
这里还引入一个关键字this的用法
如果类的成员变量与局部变量重名,类的成员变量将被隐藏,如果要使用类的成员变量,需要使用this引用之。this.变量名,this.方法名,this.父类的构造方法;
继承的特性
- 子类拥有父类非private的属性,方法。
- 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
- 子类可以用自己的方式实现父类的方法。
1 | //公共父类————动物类 |
知识点二:int与int和integer的区别?
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别:int 是基本类型,直接存数值;而integer是对象,用一个引用指向这个对象.
类似的7种基本数据类型和各自的包装类
举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种类型是放不进去的,因为容器都是装 object的,这是就需要这些包装类型了。
如果我们定义一个int类型的数,只是用来进行一些加减乘除的运算or作为参数进行传递,那么就可以直接声明为int基本数据类型,但如果要像对象一样来进行处理,那么就要用Integer来声明一个对象,因为java是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式,与一些常用的方法。
知识点三:Java中的list和set有什么区别
list与set方法的区别有:list可以允许重复对象和插入多个null值,而set不允许;list容器是有序的,而set容器是无序的等等
Java中的集合共包含三大类,它们分别是Set(集),List(列表)以及Map(映射)。它们都处在java.util中并且都为接口。它们各自都有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList。
List方法与set方法的区别
重复对象:list方法可以允许重复的对象,而set方法不允许重复对象
null元素:list可以插入多个null元素,而set只允许插入一个null元素
容器是否有序:list是一个有序的容器,保持了每个元素的插入顺序。即输出顺序就是输入顺序,而set方法是无序容器,无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序
常用的实现类
list方法常用的实现类有ArrayList、LinkedList 和 Vector。其中ArrayList 最为流行,它提供了使用索引的随意访问,而LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适,Vector 表示底层数组,线程安全
Set方法中最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap实现的 HashSet;TreeSet 还实现了 SortedSet 接口,因此 TreeSet 是一个根据其 compare() 和compareTo() 的定义进行排序的有序容器
知识点四:springboot约束Mysql表设计
概述:在springboot环境下,使用springdatajpa得时候,报错Unknown column ‘last_login_i_p’ in ‘field list’;
1 | //实体类定义 |
查看官方文档得知原因:默认使用Hiberbate4命名规则,驼峰规则转化时会在大写字母下加入下划线
1 | //修改实体类定义 |
成功运行