java基础之数组

数组:

由于单一变量只能存储一个数据,如果数据多了,其变量名变得麻烦
用数据可以存储上很多相同的数据

数据结构:按照什么样的结构来组织数据

原因:Cpu使用这些数据的时候能够更好的存储,读取和操作数据
分类:
   物理数据结构:数据在内存中的或者在外存中的真实的存储结构不需要程序员关注
   逻辑数据结构:人们按照某种想象的逻辑来组织数据的结构
         JAVA开发人员更多的关注逻辑结构
         jvm能够识别逻辑结构

数组就是人们想象出来的一种逻辑结构

这种逻辑结构要存储到内存中
由JVM来控制,程序员只需要关注数组的逻辑结构用法即可

数组的特点:

数组是一组数据的结合体
-必须是同一类型的多个数据(具体个数由程序员根据需求来定)
-在内存中必须是连续的空间(由JVM控制 )

数组的优缺点:

优点:存储同一类型的多个数据
缺点:不能存储不同类型的数据,
   数组申请完内存空间后不能动态增长空间

数组的使用:

- 1.定义数组(声明数组)

语法:
   数据类型[] 数组名称; Int[] aa;
   数据类型 数组名称[];//不建议 Int aa[];
说明:
   数据类型:所有的Java中的任何已知类型(八种基本数据类型,类类型)
   []:推荐放在数据类型的后面,数组名称的前面

- 2.给数组申请内存空间(堆空间)

数组申请内存空间(堆内存)
   先声明数组   int[] aa;//此时没有申请堆空间
   给数组申请内存空间,且给默认初值  aa = new int[5];
   能使用的数组元素有5个,每个数组元素占用4个字节空间且每个数组元素初值是0

- 3.给数组元素赋初值

如果没有明确给赋初值,则按照数据类型来给默认值
   数字类型(int float short double byte long) 默认值0
   字符型默认 \u0000
   对象类型 默认null
可以复制aa[0] = 100;
也可以使用for循环或者增强for循环复制

- 4.使用数组中的数据

数组名称[下标索引] 用来取数元素中的数据

- 5.获取数组的长度

int length = 数组的名称.length;

比如:
  int[] ages = {20,22,30,35};

ages.length;//4

- 6.数组的排序

可以排序算法:
  冒泡排序(必备技能)
  插入排序
  快速排序
….
也可以使用java.util.Arrays.sort(要排序的数组名称);会对数组进行升序排序

  • 7.数组的复制

使用System.arraycopy()方法可以实现数组的复制
方法的定义:
  public static void arraycopy(Object src,int srcpos,Object destint destops,int length);
方法说明:
  src:源数组
  srcpos:源数组中的起始位置
  dest:目标数组
  destpos:目标数组中的起始位置
  length:要复制的数组元素的数量

  比如 int[] a = new int[]{1,2,3,4,5}
		int[] a1 = new int[8];
		System.arraycopy(a,1,a1,0,4)
	结果:
	a1数组中的内容:2,3,4,5,0,0,0,0

使用java.util.Arrays类中的copyOf方法对数组进项复制
方法的定义:
  类型[] newArrayName = Arrays.copyOf(类型[] original,int newLength);
特点:
  生成的新数组是源数组的副本
  newLength小于源数组,则进行截取
  newLength大于源数组,则用0或null进行填充
  所产生的新数组可以大于源数组的长度,属于数组扩容,
  所产生的新数组可以小于源数组的长度,属于数组缩容

   比如:
    int[] a = {1,2,3,4,5};
     int[] a1 = Arrays.copyOf(a,6);
  结果:
    a1数组中的内容:1,2,3,4,5,0

- 8.二维数组

语法:
  数据类型[][] 二维数组名称 = new 数据类型[行数][列数];
比如:
 int[][] a = new int[3][4];//声明数组并在堆空间中申请12个整形空间
     a[0] a[0][0] a[0][1] a[0][2] a[0][3]
     a[1] a[1][0] a[1][1] a[1][2] a[1][3]
     a[2] a[2][0] a[2][1] a[2][2] a[2][3]
  二维数组实际上是由多个一维数组组成
  实际上上面的二维数组是由a[0] a[1] a[2]三个一维数组组成的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值