大数据复习课Day01_java基础

java原理

String、StringBuilder


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CvdFYU1Z-1615170017009)(e762975cc8967c3a93a5d9dc6790d294.png)]

String、StringBuilder、StringBuffer三者的使用场景

  1. 当字符串相加操作或者改动较少的情况下,建议使用 String str="hello"这种形式定义变量;
  2. 当字符串相加操作较多的情况下,建议使用StringBuilder
  3. 如果采用了多线程,则使用StringBuffer。

String、StringBuilder、StringBuffer三者的执行效率
StringBuilder > StringBuffer > String



ArrayList、LinkedList、Vector

ArrayList
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。
优点:查询快,修改快。
缺点:增删慢。
1)数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,会在原始大小上扩容1.5倍,将已经有数组的数据复制
到新的存储空间中。(在内存中是连续的)
2)当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动,代价比较高。适合随机查找和遍历,不适合插入和删除。
Vector
Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而
引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢。
LinkedList
LinkedList是用链表结构存储数据的,优缺点和数组正好相反。
优点:增删快
每次增加或删除的时候,不会影响到其它大量元素,只会影响链表中相关联的前后关系。
缺点:查询慢,修改慢
每次查询元素,都需要根据链接关系逐个进行匹配。
很适合数据的动态插入和删除,随机访问和遍历速度比较慢。

数组和链表

数组
数组必须事先定义固定的长度,不能适应数据动态地增减的情况。从栈中分配空间, 对于程序方便快速,但是自由度小。
优点:利用下标定位,随机访问性强,查找速度快。
缺点:插入和删除的效率低,内存利用率低,内存空间要求高,必须有足够的连续的内存空间。
链表
链表动态地进行存储分配,可以适应数据动态地增减的情况。从堆中分配空间, 自由度大但是申请管理比较麻烦。
优点:插入和删除的效率高。内存利用率高,不会浪费内存。
缺点:定位查询速度慢,修改慢。
总结:如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。


Java 中的重载和重写

重载
方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
重写
1、在子类中可以根据需要对从基类中继承来的方法进行重写。
2、重写的方法和被重写的方法必须具有相同方法名称、参数列表和返回类型。
3、重写方法不能使用比被重写的方法更严格的访问权限。


单例模式

所谓单例,就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。在Java,一般常用在工具类的实现
【加载配置,写日志,web访问计数器】。


特点
类构造器私有
持有自己类型的属性
对外提供获取实例的静态方法

懒汉模式 线程不安全,延迟初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd6obfCf-1615170017011)(eb084b02750b9d865fe6b8bbcb7516cc.png)]


饿汉模式 线程安全,比较常用,但容易产生垃圾,因为一开始就初始化


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HRlEdAUG-1615170017011)(0239ca67dd447d830d40b8da5cfddd2b.png)]

双重锁模式 线程安全,延迟初始化。这种方式采用双锁机制,安全且在多线程情况下能保持高性能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0fcWGzHk-1615170017013)(d7a733b9ffd84d79c1af20040ba539d6.png)]

工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳
方式。
工厂模式分为简单工厂模式,工厂方法模式和抽象工厂模式,它们都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的
实例化部分抽取了出来,目的是降低系统中代码耦合度,并且增强了系统的扩展性。本文对简单工厂模式进行讲解。
案例
我们将创建一个 Shape 接口和实现 Shape 接口的实体类。下一步是定义工厂类 ShapeFactory

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOgnTibp-1615170017015)(67eb2f38239a26a8f2d92c8e7fc7b2d3.png)]
在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可
以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂
度,同时也增加了系统具体类的依赖。这并不是什么好事

jvm类加载机制

JVM是一个进程, 用来模拟计算单元, 将.class字节码文件转成计算机能够识别的指令.
Java程序编译执行流程

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xianyu120/article/details/114523093