发表于: 2019-03-28 22:02:47

1 723



今天完成的事情:

1、因为请了五天半的假,今天刚回来,所以没有急着赶任务,而是把之前的任务二和任务三又重新复习了一遍。

2、找到了很多之前遗漏下的知识点,有些点不是很懂,还需要仔细研究一下。


明天计划的事情:

1、明天计划开始做任务四,争取在本周完成,然后尽快完成任务五进入到最后的任务6-10.


遇到的问题:

1、今天主要是复习,所以没有遇到什么实质性的问题。


收获:

1.1 数组的定义:

方式一:

格式:数组存储的数据类型【】数组名字=new 数组存储的数据类型【长度】;

数组存储的数据类型:创建的数组容器可以存储什么数据类型。

【】:表示数组。

数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。

new:关键字。

数组存储的数据类型:创建的数组容器可以存储什么数据类型。

【长度】:数组的长度,表示数组容器中可以存储多少个元素。

注意:数组有定长的特性,长度一旦指定,不可更改。

例如:int [] arr=new int[5];

方式二:

格式:数据类型 【】 数组名=new 数据类型【】{元素1,元素2,元素3...};

注意:给定了具体的元素就不能给定长度。

例如:int [] arr=new int{23,4,54,324,2};

 方式三:

格式:数据类型 【】 数组名={元素1,元素2,元素3...};

例如:int [] arr={12,34,5446,5,45};

1.2 数组的访问:

 直接输出数组名,显示的是数组的地址,如下面示例代码中[I@50cbc42f

索引:每一个存储到数组的元素,都会自动拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

通过索引访问数组中的元素:

数组名【索引】,获取出数组中的元素

数组名【索引】=数组,为数组中的元素赋值。

  定义一个空数组,动态初始化创建的数组,java会有默认值

  int[]的默认值是0,double[]默认值是0.0,boolean[]的默认值是false

        int [] arr2=new int[4];

        System.out.println(arr2[0]);//0

        double[] arr3=new double[4];

        System.out.println(arr3[0]);//0.0

        boolean[] arr4=new boolean[4];

        System.out.println(arr4[0]);//false

数组的长度属性:每个数组都具有长度,而且是固定的,获取数组的长度格式:数组名.length,数组的最大索引值为:数组名.length-1

public class ArrayDemo {

    public static void main(String[] args) {

        //定义数组

        int [] arr = {10,20,30,40};

 

        //直接输出数组

        System.out.println(arr);//[I@50cbc42f

 

        //通过索引获取数组元素

        System.out.println(arr[0]);//10

        System.out.println(arr[1]);//20

        System.out.println(arr[2]);//30

        System.out.println(arr[3]);//40

 

        System.out.println("------------");

        //通过索引修改数组元素

        arr[2]=100;

        System.out.println(arr[0]);//10

        System.out.println(arr[1]);//20

        System.out.println(arr[2]);//100

        System.out.println(arr[3]);//40

 

        System.out.println("--------------");

        /*

            定义一个空数组,动态初始化创建的数组,java会有默认值

            int[]的默认值是0,double[]默认值是0.0,boolean[]的默认值是false

         */

        int [] arr2=new int[4];

        System.out.println(arr2[0]);//0

        double[] arr3=new double[4];

        System.out.println(arr3[0]);//0.0

        boolean[] arr4=new boolean[4];

        System.out.println(arr4[0]);//false

    }

}

 

2.1 数组原理内存图-内存概述:

内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

java虚拟机要运行程序,必须要对内存进行空间分配和管理。

 2.2 java 虚拟机的内存划分:

 JVM的内存划分

方法栈:方法运行时 使用的内存,比如main方法运行,进入方法栈中执行。(即方法进栈执行)

堆内存:存储对象或者数组,new来创建的,都存储在堆内存。(看到new就想到存储在堆内存中)

方法区:存储可以运行的class文件。

本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关。

寄存器:给CPU使用,和我们开发无关。

3.1 数组作为方法参数

数组作为方法参数传递,传递的参数是数组内存的地址值。

public class ArrayDemo01 {

    public static void main(String[] args) {

        int [] arr=new int[]{11,22,33,44,55};

        System.out.println("arr="+arr);//arr=[I@58ceff1

 

        printArray(arr);//arr=[I@58ceff1传递的是地址值

    }

    /*

        定义方法,用于打印int类型数组中的内容

        返回值类型:打印完了就可以了,不需要返回值,void

        参数列表:打印哪个数组不确定,作为参数列表

        输出作为参数,实际传递的是地址值

     */

    public static void printArray(int[] a){

        System.out.println("a="+a);//a=[I@58ceff1

        //遍历数组

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

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

        }

    }

}

3.2 数组作为方法返回值

数组作为方法的返回值,返回的是数组的内存地址 

public class ArrayDemo02 {

    public static void main(String[] args) {

        int[] a=getArray();

        System.out.println("a="+a);//a=[I@58ceff1

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

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

        }

    }

    /*

        数组可以作为返回值类型

     */

    public static int[] getArray(){

        int[] arr=new int[]{11,22,33,44,55};

        System.out.println("arr="+arr);//arr=[I@58ceff1

        return arr;

    }

}

打印一副扑克

/*

    打印一副扑克牌

    代码实现,效果如图所示:

    黑桃A 黑桃2 黑桃3 黑桃4 黑桃5 黑桃6 黑桃7 黑桃8 黑桃9 黑桃10 黑桃J 黑桃Q 黑桃K

    红桃A

    梅花A

    方片A

    使用两个字符串组,分别保存花色和点数

 */

public class Demo09 {

    public static void main(String[] args) {

        //定义字符串数组,保存花色和点数

        String [] hs={"黑桃","红桃","梅花","方片"};

        //定义数组存放点数

        String [] ds={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

       //外循环遍历花色数组

        for (int hsIndex = 0; hsIndex < hs.length; hsIndex++) {

                //内循环遍历点数

            for (int dsIndex = 0; dsIndex < ds.length; dsIndex++) {

                System.out.print(hs[hsIndex]+ds[dsIndex]+" ");

 

            }

            System.out.println();

        }

 

 

    }

}

定义方法比较两个数组是否完全一致

/*

    定义equals方法,比较2个数组内容是否完全一致。

    代码实现,效果如图所示:

    [1,2,3,4,3,2,1]

    [1,2,3,4,3,2,1]

    是否一致:true

    开发提示:

    长度一致,内容一致,就认为是完全一致。

 */

public class Demo07 {

    public static void main(String[] args) {

        int[] arr1 = {1, 2, 3, 4, 3, 2, 1};

        int[] arr2 = {1, 2, 3, 4, 3, 2, 1};

        System.out.println("是否一致:"+equal(arr1,arr2));

 

    }

 

    /*

        返回值类型:boolean

        参数列表:int [] arr1,int [] arr2

     */

    //定义equals方法,参数列表为:(int[]?arr1,?int[]?arr2),?

    // 返回值类型为:boolean,equals方法 的功能是比较arr1数组和arr2数组内容是否一致.

    public static boolean equal(int[] arr1, int[] arr2) {

        //在equals方法中判断arr1和arr2的长度是否相等,如果不相等返回false

        if (arr1.length != arr2.length) {

            return false;

        }

 

        //在equals方法中遍历arr1数组,判断arr1和arr2的每个元素是否相等.如果不相等返回false

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

            if(arr1[i] != arr2[i]){

                return false;

            }

        }

        return true;

    }

}

评委给选手打分求平均值

/*

    有一个编程比赛,有5个评委给选手打分,取消最高分和最低分后的平均分就是这个选手的最后得分,这个评委的评分为:

    {99,100,98,97,96};

    分析:

    1.5个评委的评分使用数组保存起来,方便操作。

    2.找到最高分,找到最低分

    3.计算总分

    4.有效总分=总分-最高分-最低分

    5.计算平均分=有效总分/人数

 */

public class Test0403 {

    public static void main(String[] args) {

        int [] arr={99,100,97,96};

        int max=arr[0];

        int min=arr[0];

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

            if(arr[i]>max){

                max = arr[i];

            }else if(arr[i]<min){

                min=arr[i];

            }

        }

        System.out.println("max="+max);

        System.out.println("min="+min);

 

        int sum=0;

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

            sum += arr[i];

        }

        System.out.println("sum="+sum);

        int sum1=sum-max-min;

        int avg=sum1/(arr.length-2);

        System.out.println("平均值是:"+avg);

    }

}

数组反转

/*

    数组反转:数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1

    实现思想:数组最远端的元素互换位置。

        实现反转,就需要将数组最远端元素位置交换

        定义两个变量,保存数组的最小索引和最大索引

        两个索引上的元素交换位置

        最小索引++,最大索引--,再次交换位置

        最小索引超过了最大索引,数组反转操作结束

 */

public class Prepare09 {

    public static void main(String[] args) {

        //定义变量记录小索引:start=0

        //定义变量记录大索引:end=arr.length-1

        //循环终止条件:start<end才需要交换位置

        int []arr={11,22,33,44,55};

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

            //循环交换位置,利用第三方变量

            int temp=arr[start];

            arr[start]=arr[end];

            arr[end]=temp;

        }

 

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

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

        }

    }

}

 






返回列表 返回列表
评论

    分享到