A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 谁用了我的名字 于 2018-8-27 21:16 编辑

Java学习第5天,今天学习了数组,下附总结笔记
1、掌握数组的定义方式
        a、动态初始化:在创建数组的时候,直接指定数组当中的数据元素个数(即数组长度)
                数据类型[] 数组名称 = new 数据类型[数组长度];
                int[] arrayA = new int[300];
                Stirng[] arrayB = new String[300];
               
                使用动态初始化创建数组的时候,其中的元素将会自动拥有一个默认值:
                        如果是整数类型:那么默认为0;
                        如果是浮点类型:那么默认为0.0;
                        如果是字符类型:那么默认为'\u0000';
                        如果是布尔类型,那么默认为false;
                        如果是引用类型,那么默认为null
        b、静态初始化:在创建数组的时候,不直接指定元素个数多少,而是直接将具体的元素内容进行指定
                标准格式:数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,...};
                省略格式:数据类型[] 数组名称 = {元素1,元素2,...};
                Stirng[] arrayB = new Stirng[]{"我", "你", "他", ...};
                int[] arrayA = {1,2,3,4,5};
                Stirng[] arrayB = {"我", "你", "他", ...};
       
                注意事项:
                        静态初始化没有直接指定长度,但是仍然会自动推算得到长度
                        静态初始化标准格式可以拆分为两个步骤
                                int[] arrayA;
                                arrayA = new int[]{5, 10, 15};
                        静态初始化一旦使用省略格式,就不能拆分为两个步骤了
       
        注意事项:       
                数组有定长特行,数组一旦创建,程序运行期间,长度不可改变
                数组是一种引用数据类型
                数组当中的多个元素,类型必须统一
       
2、使用索引访问数组的元素
        格式:数组名称[索引];
        索引:每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。
                索引值就是一个int数字,表示数组当中元素的编号
                索引值从0开始,一直到“数组的长度-1”为止
       
        给数组中的元素赋值:
                数组名[索引]=数值,为数组中的元素赋值
        获取数组中的元素:       
                数据类型 变量=数组名[索引],获取出数组中的元素
               
3、了解空指针和越界异常
        空指针异常:
                如果数组只是赋值了一个null,没有进行new创建,那么将会发生空指针异常NullPointerException
        越界异常:
                数组越界就是提供的下标超出边界(out of bound),比如
                int[] a = new int[10];
                那么 a[-1] 和 a[11]就是越界。
4、掌握数组的遍历
        就是将数组中的每个元素分别获取出来
        public static void main(String[] args) {
                int[] arr = { 1, 2, 3, 4, 5 };
                for (int i = 0; i < arr.length; i++) {
                        System.out.println(arr);
                }
        }
       
5、了解数组的内存图解       
        Java的内存需要划分成为5部分:  
                栈:存放的都是方法中的局部变量。方法的运行一定要在栈当中运行
                        局部变量:方法的参数,或者是方法{}内部的变量
                        作用域:一旦超出作用域,立刻从栈内存当中消失
                堆:凡是new出来的东西,都在堆当中
                        堆内存里面的东西都有一个地址值
                        堆内存里面的数据,都有默认值、规则:
                                如果是整数类型:那么默认为0;
                                如果是浮点类型:那么默认为0.0;
                                如果是字符类型:那么默认为'\u0000';
                                如果是布尔类型,那么默认为false;
                                如果是引用类型,那么默认为null
                方法区:存储.class相关信息,包含方法的信息       
                本地方法栈:与操作系统相关
                寄存器:与CPU相关
               
        程序执行流程:
                a、main方法进入方法栈执行
                b、创建数组,JVM会在堆内存中开辟空间,存储数据
                c、数组在内存中会有自己的内存地址,以十六进制数表示
                d、数组中有3个元素,默认值0
                e、JVM将数组的内存地址赋值给引用类型变量arr
                d、变量arr保存的是数组内存中的地址,而不是一个具体数值,因此称为引用数据类型
               
6、掌握数组最大值的获取
        public static void main(String[] args) {
                //创建数组
                int[] array = {5, 15, 2000, 10000, 100, 4000};
                //假设索引为0的元素为数组中的最大值
                int max = array[0];
                //遍历数组,获取每一个元素和max作比较
                for (int i = 0; i < array.length; i++) {
                        if(max < array){
                                max = array;
                        }
                }
                System.out.println("数组中的最大值为:"+max);
        }
7、了解数组反转的原理
        public static void main(String[] args) {
                //创建数组
                int[] array = {5, 15, 2000, 10000, 100, 4000};

                //数组反转即第一个元素和最后一个元素互换,第二个元素和倒数第二个元素互换。。。
                //定义数组前面的元素定义为min,后面的元素定义为max,min和max其实就是数组的索引值,每次min和max互换后,min自增1(min++),max自减1(max--)
                //定义一个变量,最有前后两个数据互换的中间值
                //当min等于或者大于max是停止互换
                for(int min = 0, max = array.length - 1; min <= max; min++, max--){
                        int temp = array[max];
                        array[max] = array[min];
                        array[min] = temp;
                }

                //遍历反转后的数组
                for (int i = 0; i < array.length; i++) {
                        System.out.println(array);
                }
        }
8、了解数组作为方法参数传递
        数组作为方法参数传递,传递的参数是数组内存的地址
       
9、了解数组作为方法的返回值
        数组作为方法的返回值,返回的是数组的内存地址


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马