Java学习第七天2019_7_23 顺序表

昨天内容复习

1、限定符:分为两类顶级和成员级

public            |          package-private    |      protected    |    private

public            |         空白                       |      protected     |    private

2、static 限定符(静态属性/静态方法)

静态属性保存在类(方法区)中

static 最关键作用,就是和对象解绑

(1)静态属性:没有存在对象中,存在类中

(2)静态方法:没有一个隐式的当前对象引用this

(3)静态方法中,无法访问普通属性,无法调用普通方法,无法使用this关键字

(4)静态属性存在并且只存在一份,表现出共享的特性,类似全局变量

3、属性(静态/非静态)的初始化规则

(1)初始化的方式:

静态属性:

1)定义是直接初始化;

2)使用静态代码块初始化

            语法:static   { 初始化语句 ; }

普通属性:

1)定义时直接初始化

2)初始化代码块初始化

           语法:{ 初始化语句; }

3)在构造方法中初始化

(2)时机:

静态属性:类被加载到内存时;

普通属性:对象被实例化时

(3)顺序:

1)类的加载一定发生在对象实例化之前,所以静态属性初始化发生在普通属性的初始化之前

2)静态属性初始化顺序,按照定义时的书写顺序依次初始化

3)普通属性初始化顺序,定义和构造代码块按书写顺序依次进行初始化,构造方法中的初始化一定发生在最后,和书写顺序无关

=========================================================================

数据结构

一、复杂度:粗略衡量算法好坏的刻度尺(工具)

两个维度:

时间复杂度:快慢

空间复杂度:使用空间的情况

1、粗略计算算法的快慢

n:数据的规模

F(n):n的数据规模下,需要的大概基本指令个数

2、引入大O渐进法:O(f(n))           ->与f(n)的区别:

(1)只保留最高次项

(2)保留的最高次项系数化为1

算法的快慢还和最好的情况、平均的情况、最坏的情况:一般优先关注最坏情况,其次平均情况,最好情况关注较少

3、常见的时间复杂度

O(1)    O(log(n))           O(n)    O(n*log(n))         O(n^2)

4、递归方法的时间复杂度:

画调用栈

5、空间复杂度:

O(F(n))   在n输入规模的情况下,算法需要的最大的空间情况(额外的)

(1)开辟数组

(2)调用栈

数据结构一般操作:

(1)初始化(构造方法)    (2)增 / 删 / 查 / 改(普通方法)       (3)销毁(可能不存在)

(2)线性结构:

顺序表、链式表

练习:写一个简单顺序表的初始化、以及增、删(头增/删、尾增/删、)

==

==================================================================

增加顺序表容量不够的操作:

1、先考虑容量怎么样是够用的:

size < array.length

2、容量不够怎么办:

扩大原有的容量;

int newCapacity = array.length*2;

(1)找新家

int[] newArray = new int[newCapacity];

(2)搬家

for(int i=0;i<size;i++){

          newArray[i] = array[i];

}

(3)发朋友圈

this.array=newArray;

(4)老房子推掉

原来的数组对象,没有引用指向,变成垃圾了

Java一般不需要特殊处理,垃圾自己会被回收

发布了78 篇原创文章 · 获赞 4 · 访问量 4182

猜你喜欢

转载自blog.csdn.net/weixin_43580746/article/details/96994592