JavaSe基础(4)---数组

0x01、引言  为什么要有数组

     如果需要保存100个学员的成绩,如何做?
    int a=12;
    int b=13;
    int c=14;
    int d=15; 

     定义100个变量?NO, 我们可以使用数组

 

0x02、什么是数组?

     一组具有相同数据类型的有序的集合(数据结构)

0x03、数组三个特点?

   a、数组的长度固定  一旦定义就不可以改变 不可改变   
   b、数组中的元素可以基本数据类型 也可以是引用数据类型   但是数组本身 是引用数据类型
   c、数组中的元素是有顺序 
 

0x04、数组的声明有几种方式



0x05、数组定义的格式

    格式1:

    元素类型[]  数组名 = new 元素类型[元素个数或数组长度];
示例:int[]  arr = new int[5]; // arr是什么数据类型? 是数组类型   int是元素类型  []就代表数组

   格式2:

    元素类型[] 数组名 = new 元素类型[]{元素,元素,……}; 
int[] arr = new int[]{3,5,11,18};
int[] arr = {3,5,11,18};
 数组里面的元素个数比较多,为了方便操作这些元素,会自动的给数组中的元素进行编号,
从0开始的,这些编号---下标(角标),最大下标值为(长度-1)
可以自动给数组中的元素从0开始编号,方便操作这些元素。
   

   总结:无论是更改和获取  都是通过  数组名称[下标] 的形式进行的;


0x06、数组的长度如何获取?数组下标的最大值是多少?

      length 是属性

0x07、如何获取数组中的元素值?

     数组名称[数组下标]

0x08、数组的初始化方式有几种

  三种
  1、默认初始化  为数组分配空间  并添加默认值   比如  int[] a = new int[12];   
  2、静态初始化  定义数组的时候 就进行赋值
        比如:String[] str= new String[]{"one","two","three"};
                 int[] arr = {3,5,11,18};
  3、动态初始化  为数组分配空间和赋值 动作分开进行
        比如: String[] one = new String[7];
            for(int i=0; i<one.length; i++)
             {
                        one[i] = i*100+"";
             }

0x09、数组的拷贝如何实现?



0x10、数组的排序、查找、复制、填充如何操作?

java.util 类 Arrays  从以下版本开始: 1.2 

   Arrays.toString()  将数组打印
   Arrays.sort()           给数组排序  
   Arrays.binarySearch()  查找数组中某个元素 所在位置  注意  使用前要排序
   System.arrayCopy()  从一个数组中复制一些元素 到目标数组中
  
   String类型   转化为byte[] (字节数组) 
   String str = "asdfghjkl";
   byte[] one = str.getBytes();//将String 变为字节数组


    //byte[](字节数组)  转化为   String类型 
    byte[] two = {1,2,3,4,5};//定义了一个字节数组
    String strOne = new String(two);//将字节数组中所有的元素 变为String
     String strTwo = new String(two,1,3);//将字节数组中 从下标为1的位置开始,取三个字节数组元素
                            //并将取出的部分变为String
 

0x12、数组中的数组 二维数组[][]( 了解 )

     格式1:int[][] arr = new int[3][2];
       定义了名称为arr的二维数组
      二维数组中有3个一维数组
      每一个一维数组中有2个元素
      一维数组的名称分别为arr[0], arr[1], arr[2]
      给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
    格式2:int[][] arr = new int[3][];
       二维数组中有3个一维数组
       每个一维数组都是默认初始化值null
       可以对这个三个一维数组分别进行初始化
         arr[0] = new int[3];
         arr[1] = new int[1];
         arr[2] = new int[2];
   格式3:int[][] arr = {{3,8,2}   ,{2,7}  , {9,0,1,6}}; // 二维数组中 的每一组{}代表了一个一维数组
     定义一个名称为arr的二维数组
     二维数组中的有三个一维数组
     每一个一维数组中具体元素也都已初始化
     第一个一维数组 arr[0] = {3,8,2};
     第二个一维数组 arr[1] = {2,7};
     第三个一维数组 arr[2] = {9,0,1,6};
     第三个一维数组的长度表示方式:arr[2].length;


说明:
    int[][] arr = new int[3][2];
    System.out.println(arr.length);//打印二维数组的长度。其实就是一维数组的个数。
    System.out.println(arr[1].length);//打印二维数组中角标为1一维数组的长度。


应用:计算总和的时候比较多   比如:成绩、业绩等等
    int sum = 0;
int[][] arr = {{30,20,50},{10,20,30,40},{90,10}};


for(int x=0; x<arr.length; x++)
{
for(int y=0; y<arr[x].length; y++)
{
// System.out.print(arr[x][y]+",");
sum += arr[x][y];

}
}
System.out.println("sum="+sum); //计算数组中元素的和



0x13 冒泡方式实现

/**
* 自己定义的冒泡排序
* @param arr  int元素 类型的数组
*  比较的是两个相邻的元素   
*  如果第一元素 比第二种元素大  
*  则将两个位置元素进行交换
*/
public static void mySort(int[] arr){// 面试前 背一下

for( int i=0; i<arr.length-1 ;i++ ){//最后一个元素 没有必要和自己进行比较
for( int j=0; j<arr.length -1 -i; j++ ){//-1为了避免下标越界 -i是为了提高 判断的效率
if(arr[j]>arr[j+1]){//判断两个相邻的元素 大小 
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp; 
// System.out.print("*");
}
}
// System.out.println();
}
}



你可能感兴趣的:(JavaSe基础(4)---数组)