首页 > 编程语言 > 详细

java基础(二)

时间:2020-07-20 15:07:04      阅读:63      评论:0      收藏:0      [点我收藏+]

数组

数组是相同类型数据的有序集合,数组描述的是相同数据的若干个数据,按照一定的先后次序排列而成,其中,每一个数据都是一个元素,可以通过下标访问,数组默认的下标是从零开始。

数组的基本特点:

  数组的长度是确定的,数组一旦被创建,数组的长度也会随之确定,数组的长度是不可变的。

  其中的元素必须是统一类型,是int全都是int,不允许出现其他类型,

  数组的类型可以是任意类型,包括8大基本数据类型和引用类型

声明一个数组:int []=null; int [] =new [10]; int []={1,2,3,}

其实java中并不存在所谓的多维数组,只有一维数组,多维数组有叫做“数组中的数组”,这也是java的优势所在.

数组的常用方法:

  1.copyOfRange (Object[] obj, int from, int to):将指定数组的范围复制到一个新数组

  2.hashCode(Object[] a):将指定的数组返回哈希码  

  3.Arrays.sort(a):数组排序

  4.Arrays.file(数组,A,B,C);将数组A到B索引的元素替换为C

冒泡排序法:

  

public class Test{

public static void main(String[] args){

  int[] values={2,1,0,5,9,7,6,3,15,21};
  sort(values);
  System.out.println(Arrays.toString(values));
}

public static void sort(int[] values){
  int temp;
  for(int i=0;i<values.length;i++){
    for(int j=0;j<values.length-1-i;j++){
      if(values[j]>values[j+1]){
        temp=values[j];
        values[j]=values[j+1];
        values[j+1]=temp;
      }
    }
  }
}
}

//从小到到达排序,会先将最大的找出来,放到最后;从大到小排列,会先将最小的找出来放放到最后
//第一次完全把数组遍历一次,把最小的找出来了,再遍历一次会把比最小的大一个的数找出来,以此类推。

在平常的开发中一般会将数组转换为集合,因为数组一旦创建,就不可以再修改.

技术分享图片

 

 

 在图中所有的节点都是实现类,其他都是接口,继承了父接口.

collection接口存在两个子接口,一个是list,一个是set。list接口是有序的,而且允许数据重复,set接口是无须,也不允许 数据重复.

list有3个实现类,分别是Arraylist,linkedlist,vector这3个实现类,此借口用户可以对插入的元素准确的控制,用户可以根剧元素的整数索引去访问元素.list接口在iterator,add,remove,equals和hashcode的方法上加了一些其他的约定超过了collection接口中指定的约定.

Arraylist:是java集合中常用的数据结构,继承自Abstractlist,实现了list接口,底层基于数组实现容量大小动态变化,允许null的存在,同时还实现了RandomAccess,Cloneable,Serializable接口,所以Arraylist是支持快速访问,复制和序列化的.

Arraylist的底层是基于数组来实现容量大小动态变化的.

技术分享图片

技术分享图片

 上面的size是指elementData中实际有多少个元素,elementData.length为集合容量,表示可以容纳多少个元素.默认初始容量大小为10.

transient

java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。

Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据 成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字 transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的

private transsient int modCount=0;

这个变量是定义在Abstractlist中的,记录对list操作的次数。主要使用在iterator,是防止在迭代的过程中集合被修改.

 set接口:

  顾名思义,就是集合的意思,java的集合和数学的集合一样,满足集合的无序性,确定性,单一性,所以可以很好的理解,set是无序的,不可重复的,set只允许存在一个null;

    set就相当于一个罐子,丢进的set元素没有先后的差别。

    set判断两个元素相同用的不是“==”,而是根据equals方法,

Map接口:

  map接口不是collection的子接口或者实现类,map是一个接口;

  Map用于保存映射关系的数据,每个entry都持有键----值两个对象,在Map中,value可能会重复,但是键不允许重复;

  map中可以存在多个value为空,但是只允许一个键为空

  map的子接口;

    1.hashmap:和hashset不能保存元素的顺序一样,hashmap也不能保证键--值对的顺序,通过hashMap的值.equals进行比较,同时两个key的hashcode值也必须相等;

    2.hashTable:一个古老的map实现类,线程安全。 

  

  

 

java基础(二)

原文:https://www.cnblogs.com/wmw1226/p/13253190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!