码迷,mamicode.com
首页 > 编程语言 > 详细

Java学习---数组

时间:2018-02-28 22:58:06      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:下标越界   基数排序   直接插入   复制   实体   als   一个   数组下标   平均数   

2018-02-28数组:相同数据类型的数据的组合。

如:int score1=1;

  int score2=2;

  int score3=3;

使用数组:

1.数组的初始化

  int[] score1=new int[]{1,2,3};//静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。

  int[] score2=new int[3];//动态初始化:在声明初始化数组与给数组相应元的素赋值操作分开进行。

  score2[0]=1;

  score2[1]=2;

  score2[2]=3;

    //声明数组的错误写法:

  • String[] names=new String[5]{"AA","BB","CC"};
  • int i[10];
  • int i=new int[];

//不论动态初始化,还是静态初始化,一定要在创建时,就指明数组的长度。

2.如何应用数组元素:通过数组的下角标的方式。下角标从0开始,到n-1结束。其中n为数组的长度。

3.数组的长度:通过数组的属性length来调用。

System.out.println(score2.length);//3

4.如何遍历数组

for循环

for(int i=0;i<score1.length;i++){

  System.out.println(score1[i]);

}

5.数组的默认初始化值:

1)byte int short long      0

2)float double    0.0

3) char   空格

4)boolean    false

5)引用类型变量  null

6.数组的内存结构

内存的基本结构:栈空间堆空间方法区静态域 


数组的内存结构:以一位数组来说:①相应的引用放在栈空间②数组的实体存放在堆空间

数组的作用域:引用计数算法:若堆空间的值在栈空间没有引用,那么jvm将对其进行内存回收。

 二维数组

1.声明并初始化

//一维

int[] =new int[12];

int[0]=12;

int[] j=new int []{12.3};

//二维

1)String[][] str=new String[4][3];//4行3列   长度为4   动态初始化

2)String[][] str1=new String[4][];

str1[0]=new String[3];

str1[1]=new String[4];

...

3)静态初始化

int[][] arr=new int[][]{1,2,3}{4,5}{6};

2.如何引用二维数组

arr[1][0]=12;

3.二维数组的长度:arr.length;//3

arr[1].length;

4.遍历二维数组

for(int i=0;i<arr.length;i++){

  for(int j=0;j<arr.length;j++){

    System.out.print(arr[i][j]+"\t");

  }

    System.out.println();

}

5.二维数组的结构

0000                   00000000

0000                   000000

0000                   0000

6.数组的常见异常

1)数组下标越界

2)空指针异常

7.数组的常用算法

1.求数组的最大值、最小值、和、平均数、中位数。

2.数组的复制和逆转。//值传递

1)复制

情况一:让两个数组的指针相等

情况二:重新new一个数组,然后将元素依次赋值。

2)数组的反转 

for(int i=0;i<arr.length/2;i++){

  int temp=arr[i];

  arr[i]=arr[arr.length-1-i];

  arr[arr.length-1-i]=temp;

}

for(int x=0,y=arr.length-1;x<y;x++,y--){

  int temp=arr[x];

  arr[x]=arr[y];

  arr[y]=temp;

}

拓展:反转字符串 String str="abcdefg";

思路:将其放进数组然后套用上面的算法

数组的排序:

插入排序

直接插入排序、折半插入排序、Shell排序

交换排序

冒泡排序、快速排序(分区交换排序)

选择排序

简单选择排序、堆排序

归并排序

基数排序

//实际开发中,调用Arrays工具类Arrays.sort(arr);//默认从大到小

Java学习---数组

标签:下标越界   基数排序   直接插入   复制   实体   als   一个   数组下标   平均数   

原文地址:https://www.cnblogs.com/Gaohy/p/8485931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!