JavaSE Day4

本节内容

 

1.掌握一维数组的基本用法

2.会应用数组解决简单问题

3.了解二维数组的基本用法及简单应用

 

我们前边学习了变量。。。。  变量可以存储数据,他只能存储一个数据。。。。。。那么如果我们需要存储多个数据呢?。。。。。。这个时候变量不能满足我们的要求了。我们将要学一个新的知识   “数组”可以帮我们解决这个问题。

一、数组的基本用法

  1.数组的定义

        同一种类型数据的集合。其实数组就是一个容器。

 2.索引

    数组(数据集合)系统会给他编号,从0开始。(下标)

3.声明创建数组

     1.声明数组

   

int[ ] score = {89, 79, 76}

int[ ] score = new int[ ]{89, 79, 76};

 

          

int[]  arr;

 2.给数组分配空间

 arr  = new  int[5]

3.给数组赋值

arr[0]=10;

4.处理数据

 

arr[0]=arr[0]+10;

5.数组的大小

arr.length

 

 

java 内存

         堆内存:用来存放由new创建的对象和数组

         栈内存:  用来存放在函数中定义的一些基本类型的变量和对象的引用变量

    6.遍历数组

       1.使用for循环

             

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


        System.out.println(arr[i])

}

 2.for each循环输出数组数据

又称通用for循环,可以用来依次处理数组或集合中的每个元素而不必为指定下标值而分心

语法:

for(variable:collection){
    //语句块
}

定义一个变量用于暂存集合中的每一个元素,并执行相应的语句块。
集合表达式必须是一个数组或是一个实现了Iterable接口的类对象。

int[] scores={86, 88, 56, 63};
for(int n:scores){
System.out.println(n);
}

数组操作API:Arrays类位于java.util包下

java.util包提供了许多存储数据的结构和有用的方法
Arrays类提供许多方法操纵数组,例如:排序,查询

boolean equals(array1,array2):比较两个数组是否相等。

   

                 String[] str1={"1","2","3"};

        String[] str2={"1","2",new String("3")};

        System.out.println(Arrays.equals(str1, str2));//结果是:true

void sort(array):对数组array的元素进行升序排列

         //给一个数组进行排序

        int[] score ={79,65,93,64,88};

        Arrays.sort(score);//给数组排序

        //sort:作用是把一个数组按照有小到大进行排序

        //str代表的也是一个引用地址

        String str = Arrays.toString(score);

        //print方法可以直接打印字符串的值

        System.out.println(str);

        //Arrays.toString(score):把数组转变成字符串

String toString(array):把数组array转换成一个字符串

 //toString:把一个数组转换成一个字符串

           //定义 一个数组

        int[] a={1,2,3};

        System.out.println(a);//打印出的是hashcode码

        System.out.println(Arrays.toString(a));//打印出的是数组

void fill(array,val):把数组array所有元素都赋值为val。

               //fill方法:把数组中的所有元素替换成一个值

        int[] num={1,2,3};

                 //参数1:数组对象

        //参数2:替换的值

        Arrays.fill(num, 6);

        System.out.println(Arrays.toString(num));//打印结果:[6, 6, 6]

int binarySearch(array,val):查询元素值val在数组array中的下标

 //binarySearch:通过二分法的方式找对应元素的下标

        //使用前提:必须经过排序才可以使用

        char[] a={'a','b','c','d','e'};

        int i = Arrays.binarySearch(a, 'd');

        System.out.println(i);//结果是:3

        

        char[] b={'e','a','c','b','d'};

        Arrays.sort(b);

        int j=Arrays.binarySearch(b, 'e');

        System.out.println(j);

copyof(array,length):把数组array复制成一个长度为length的新数组。

 //copyOf:把一个原有的数组内容复制到一个新数组中

        int[] a={1,2,3};

                //参数1:原数组   参数2:新数组的长度

        int[] b=Arrays.copyOf(a, a.length);

        System.out.println(Arrays.toString(b));

        //a和b的地址码不同

二维数组

   在Java中没有多维数组,只有一维数组。多维数组叫做:数组的数组

   二维数组的每一个元素是一个一维数组

  定义:

         数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];

       int[][] arr = new int[3][5];---定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数

 arr[0]---下标为0的位置上的一维数组

 

arr[1][3]---如果要获取具体的元素需要两个下标

数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][];

二维数组的应用

            二维数组的长度:数组名.length ---每个一维数组:数组名[下标].length

          二维数组的遍历---两重for循环

    

for(int i = 0; i < arr.length; i++){ //遍历二维数组,遍历出来的每一个元素是一个一维数组
for(int j = 0; j < arr[i].length; j++){ //遍历对应位置上的一维数组
System.out.println(arr[i][j]);
}
}

二维数组的反转---头尾交换

for(int start = 0, end = arr.length -1; start < end; start++,end--){
int[] temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}

 

 

      

   

 

posted @ 2018-07-25 14:52  龙之殇--疯狂者  阅读(228)  评论(0编辑  收藏  举报