Java基础要点总结

面向对象特性

抽象:将外部所有干扰事务剔除,只遗留当前所需事物,组合成一个函数或者对象提供外部使用;
组合:主要就是将抽象出来的函数或者对象组合成一个有意义的事务;
继承:一个新类或者对象可以由原有的类或者对象派生出来;
注释:继承主要有两种类型,抽象类、接口,分别继承(extends)、实现(implement);

  • 抽象类对于类而言只能继承一次,主要目的是将不同类中相同部分逻辑交由抽象类实现,子类主要实现自身特有部分逻辑(主要目的就是减少代码的编写量);
  • 接口对于类而言可以实现多个,同类型的子类实现的方法名一致,内部逻辑不一样(主要目的形成一种规范);

区别:

  1. abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
  2. 在abstract class 中可以自己的数据成员,也可以非abstarct的成员方法,而在interface中,只能够静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
  3. abstract class和interface所反映出的设计理念不同。其实abstract class表示的是”is-a”关系,interface表示的是”like-a”关系。
  4. 实现抽象类和接口的类必须实现其中的所方法。抽象类中可以非抽象方法。接口中则不能不实现方法。
  5. 接口中定义的变量默认是public static final型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
  6. 抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
  7. 接口中的方法默认都是public,abstract 类型的。

多态:由继承延展出来,继承过程中旧类的一些方法可以被新类给重载(ovreload)和覆盖(ovreread),以提供不同场景下使用;
注释:重载同个函数名由不同参数或者返回值进行区别;覆盖同个函数内容被子类所重写用于自定义处理逻辑;

  • 重载,指方法名一样,参数不一致,以此进行对不同请求进行响应;
  • 重写,指方法名一样,参数一样,其内容处理逻辑不一样,主要在继承或实现接口中使用;

Java基础:

  • Java基础数据类型:byte、int、long、float、double、char、short、boolean
  • Java引用数据类型:Byte、Integer、Long、Float、Double、Char、Short、Boolean

注:引用类型与基础类型主要区别是在初始化时,部分数据类型为0,而引用类型为null,且引用类型都添加了final修饰,既是不可继承;


集合类

Collection是集合类的上级接口,继承与他的接口主要Set和List.

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作;经常在线程中产生一个线程安全的对象用于存储数据

Collection
├List
│├LinkedList: 使用双向链表实现存储,序号索引数据需要进行前向或者后向遍历,但插入数据只需在前后项插入,插入速度很快;
│├ArrayList : 使用数组方式存储数据,允许直接通过序号索引元素,插入需要数组元素移动,索引数据快;
│└Vector : 同ArrayList,但使用synchronized修改方法,是为线程安全;
│ └Stack
└Set 同map,但不允许null值;
Map
├Hashtable :同HashMap,但不允许null键或者null值,且线程安全
├HashMap :允许null键或者null值,且非线程安全;
├WeakHashMap:
└ConcurrentHashMap:同Hashtable很像,不允许为null的key或value,但它不是通过方法加synchronized方法进程并发控制的,而是使用分段锁技术segment,将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问,能够实现真正的并发访问,效率也比Hashtable好的多;


TreeMap、HashMap、LinkedHashMap区别

java.util.Map[I]
+–java.util.SortedMap[I]
+—–java.util.TreeMap[C]
+–java.util.Hashtable[C]
+–java.util.HashMap[C]
+–java.util.LinkedHashMap[C]
+–java.util.WeakHashMap[C]

  1. HashMap和Hashtable主要区别在线程安全方面和存储null值方面;
  2. LinkedHashMap保存了数据的插入顺序,底层是通过一个双链表的数据结构来维持这个插入顺序的,key和value都可以为null;
  3. TreeMap实现了SortMap接口,他保存的记录是根据键值key排序,默认是按key升序排序,也可以指定排序的Comparator。
    HashMap、LinkedHashMap和TreeMap都是线程不安全的;

String、StringBuffer、StringBuild:

  • String字符串操作类型,对象不可变(其构造函数为final类型,不可继承);
  • StringBuffer字符串操作类,对象可变常用于字符串对象构造,且线程安全;
  • StringBuild同StringBuffer一样,其不是线程安全;

static 和 final

  • final定义的变量可以看做一个常量,不能被改变;
  • final定义的方法不能被覆盖;
  • final定义的类不能被继承。
  • final static 就是再加上static的特性就可以了
  • static 和final是没有直接关系的
  • static 是在内存中分配一块区域,供整个类通用,所有的类的对象都享有它的共同的值

java反射机制

  1. 对于任意一个类,都能够知道这个类的所有属性和方法;
  2. 对于任意一个对象,都能够调用它的任意一个方法;

这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制;

POJO(Plain Ordinary Java Object)

  • 简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
  • 使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值