java第四篇流程控制和第五篇数组

1.复合语句:由{开始,由}结束。在作用域外调用复合语句内的变量会报错。

2.if语句、switch语句:break 停止, 没有情况执行default。while(进入条件)循环{} 、do.. while(结束条件) 循环、for循环、foreach循环. 跳转语句 break(跳出循环)、 continue(跳过当前循环执行下一次循环)、return (跳出方法)

3.数组用new关键字来分配内存,new时指定数组元素个数, 数组元素类型【】名字、 和 数组元素类型 名字【】两种形式。二维数组:数组元素类型【】【】名字、 和 数组元素类型 名字【】【】两种形式 赋值 int[][]array = {{12,0},{13,11}},三维数组 三个大括号,每个元素为一个二维数组,以此类推。数组元素类型 名字【】【】【】和数组元素类型【】【】【】名字。

4.Array.fill(int[]a, int value) 把指定的int值分配给int型数组的每个元素 返回值为数组。Array.fill(int[]a,int start(包括), int end(不包括), int value)从start索引到end索引赋值为value ,返回值维数组。这里有很多方法和重载。

5.冒牌排序,插入排序等等。由于上班较忙,写的不是很详细。一会再上传一个用lua实现栈。

这里补充下排序的一些基本概念:稳定性:如果相同元素排序前后的顺序不变,说明该算法是稳定的,时间开销:数据比较次数与数据移动次数来衡量,空间开销:执行算法顺序时的附加存储开销。

简单排序思想;经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮比较,得到最小的记录并与第二个记录进行位置交换;重复该过程,直到进行比较的记录只有一个时为止。

冒泡排序思想:冒泡排序 ,假设有N个数,游标从第一位数开始,若左边的数比右边的数大,则左边交换,游标移向下一位直到最后一位。在游标移动过程中,可以保证,右边的数一定比左边的数大,因为第一轮遍历是要找出最大的数并且最大的数在最后一位。同理,要找出第二大的数,重复上述过程,直至找出第N大的数,排序结束。因此时间复杂度是N*N,空间复杂度是N。

直接插入排序思想:当插入第i个对象时,i前面的元素已经排好序,这时把第i个元素插入到对应的位置即可。

Vector类型

1、这是一个集合,底层是用数组实现的,不过是可变长的,默认初始容量是10,默认增长因子是0,如果想要加入新的元素而容量不足就需要进行扩容,如果增长因子大于0,就增长负载因子个数的容量,否则增长为原来容量的两倍,如果容量仍然不够,就直接增长为所需最小容量。频繁地扩容容易引起效率问题,所以最好在调用构造函数的时候指定一个合适的容量或者调用ensureCapacity()方法进行扩容到适当的容量。

2、这个类是线程安全的,采用了快速失败机制,提供了增加、删除元素,更加方便快捷。

3、线程安全不意味着对于这个容器的任何操作都是线程安全的,比如在进行迭代的时候,如果不增加一些代码保证其线程安全,其他线程是可以对这个容器做出修改的,这样也就会导致抛出ConcurrentModificationException异常。

猜你喜欢

转载自blog.csdn.net/weixin_39407066/article/details/80861280