育儿通往财富自由之路

2018-08-22 Java基础知识

2018-08-22  本文已影响0人  Janny_lwj
抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。这个抽象模型我们称之为类。对类进行实例化得到对象。

封装:封装可以使类具有独立性和隔离性;保证类的高内聚。只暴露给类外部或者子类必须的属性和操作。类封装的实现依赖类的修饰符(public、protected和private等)

继承:对现有类的一种复用机制。一个类如果继承现有的类,则这个类将拥有被继承类的所有非私有特性(属性和操作)。这里指的继承包含:类的继承和接口的实现。

多态:多态是在继承的基础上实现的。多态的三个要素:继承、重写和父类引用指向子类对象。父类引用指向不同的子类对象时,调用相同的方法,呈现出不同的行为;就是类多态特性。多态可以分成编译时多态和运行时多态。

抽象、封装、继承和多态是面向对象的基础。在面向对象四大基础特性之上,我们在做面向对象编程设计时还需要遵循有一些基本的设计原则。
抽象类: 
用来捕捉子类的通用特性的,不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里面子类的模板的。
关键字:abstract

接口:
抽象方法的集合,如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。
关键字:interface
image.png
如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。

如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。

如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
寄存器:我们在程序中无法控制

栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中

堆:存放用new产生的数据

静态域:存放在对象中用static定义的静态成员

常量池:存放常量

非RAM(随机存取存储器)存储:硬盘等永久存储空间
1、HashMap是非线程安全的,HashTable是线程安全的。 
2、HashMap的键和值都允许有null值存在,而HashTable则不行。 
3、因为线程安全的问题,HashMap效率比HashTable的要高。 
4、Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。 
一般现在不建议用HashTable, ①是HashTable是遗留类,内部实现很多没优化和冗余。②即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable。
Array可以容纳基本类型和对象,而ArrayList只能容纳对象。 
Array是指定大小的,而ArrayList大小是固定的。 
Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。尽管ArrayList明显是更好的选择,但也有些时候Array比较好用。 
(1)如果列表的大小已经指定,大部分情况下是存储和遍历它们。 
(2)对于遍历基本数据类型,尽管Collections使用自动装箱来减轻编码任务,在指定大小的基本类型的列表上工作也会变得很慢。 
(3)如果你要使用多维数组,使用[][]比List
ArrayList和Vector在很多时候都很类似。 
(1)两者都是基于索引的,内部由一个数组支持。 
(2)两者维护插入的顺序,我们可以根据插入顺序来获取元素。 
(3)ArrayList和Vector的迭代器实现都是fail-fast的。 
(4)ArrayList和Vector两者允许null值,也可以使用索引值对元素进行随机访问。 
以下是ArrayList和Vector的不同点。 
(1)Vector是同步的,而ArrayList不是。然而,如果你寻求在迭代的时候对列表进行改变,你应该使用CopyOnWriteArrayList。 
(2)ArrayList比Vector快,它因为有同步,不会过载。 
(3)ArrayList更加通用,因为我们可以使用Collections工具类轻易地获取同步列表和只读列表。
对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。
上一篇 下一篇

猜你喜欢

热点阅读