2018-08-22 Java基础知识

作者: Janny_lwj | 来源:发表于2018-08-22 10:03 被阅读0次
  • 面向对象的四大基本特征:
抽象:提取现实世界中某事物的关键特性,为该事物构建模型的过程。对同一事物在不同的需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。这个抽象模型我们称之为类。对类进行实例化得到对象。

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

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

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

抽象、封装、继承和多态是面向对象的基础。在面向对象四大基础特性之上,我们在做面向对象编程设计时还需要遵循有一些基本的设计原则。
  • Java类是只能单继承,但可以多重继承。
  • Java接口是可以多继承的
  • 接口全是抽象方法
  • 一个类如果实现了一个接口,则要实现该接口的所有方法
  • 重载:在一个类中允许函数有相同函数名,只要参数的个数或参数类型不同。
  • 接口和抽象类的区别:
抽象类: 
用来捕捉子类的通用特性的,不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里面子类的模板的。
关键字:abstract

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

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

如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
  • 多态
    同一个对象,在程序不同时刻的多种运行状态。

  • 单例设计模式

  • Java内存分配之堆、栈和常量池

寄存器:我们在程序中无法控制

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

堆:存放用new产生的数据

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

常量池:存放常量

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

相关文章

  • 2018-08-22 Java基础知识

    面向对象的四大基本特征: Java类是只能单继承,但可以多重继承。 Java接口是可以多继承的 接口全是抽象方法 ...

  • Android 知识梳理目录 - 好吧,这是一个很"干

    一、Java 知识梳理 Java&Android 基础知识梳理(1) - 注解Java&Android 基础知识梳...

  • java基础知识

    title: java基础知识tags: [java基础知识] 位运算符 java种的运算符有 “&”,“|”,“...

  • Java基础知识整理(一)

    1.Java基础知识体系 2.Java技术体系平台 3.Java语言特点与核心机制 1.Java基础知识体系 2....

  • 大话Java持久层

    基础知识储备: Java SE(Java语言【java.lang】、Java集合框架【java.util】) Ja...

  • Android面试题4

    1 Java基础知识。线程,java虚拟机,内存模型等。2 Android基础知识。官方API,常用控件源码,自定...

  • Java 序列化

    title: Java 序列化categories: 后台开发tags: java 基础知识 必备 Java 序列...

  • Java基础知识脑图总结

    Java基础知识脑图总结

  • Android内存泄漏

    文章包括两部分: (1)java内存泄漏基础知识 (2)Android内存泄漏。 一.Java内存泄漏基础知识 1...

  • Java面试知识点汇总

    1.基础知识 【JAVA】JAVA 中的小知识(补充中...) 【JAVA】private、protected 和...

网友评论

    本文标题:2018-08-22 Java基础知识

    本文链接:https://www.haomeiwen.com/subject/oakeiftx.html