黑马程序员----------java基础知识(4)之数组

                                    ----------------------android培训java培训、期待与您交流! ----------------------

       今天主要学习了java中的函数,也就是方法,还有数组,下面针对数组做一下自己的总结。

      

        :数组(重点)
    (1)数组的概念和特点
        A:数组时存放同一种数据类型的集合.数组是一个容器.
        B:特点
            **它会把元素自动从0开始编号,方便于操作元素.
    (2)数组定义的两种格式    
        A:第一种
            int[] arr = new int[长度]; 经常使用

            /*
                左边:
                    int 元素的数据类型
                    [] 表示这是一个数组
                    arr 是数组(变量)名

                右边:
                    new 用于创建实体的.
                        实体:可以用于存放多个数据的东西.
                        就像class定义一个类似的.
                    int 元素的数据类型
                    [] 表示这是一个数组
                    长度 表示的是数组中的元素个数
            */

            int arr[] = new int[长度]; //了解
        B:第二种
            int[] arr = new int[]{元素列表...};
            int[] arr = {元素列表...};  经常使用

        C:那么,我们定义数组的时候使用哪种格式呢?
            如果数组的元素能够明确的列出来,用第二种.否则,用第一种.
    (3)什么时候使用数组呢?
        当你要操作的数据是多个的时候,考虑使用数组.
    (4)java中的内存图(看懂)
        栈:存储的是具备变量(函数内定义的变量)
            特点:离开使用空间,立刻自动释放.
        堆:存储的是实体,就是 new出来的东西.
            特点:
                **堆内存中的实体都有首地址值
                **堆内存中的实体的变量都有默认值
                    byte,short,int,long 0
                    float,double 0.0
                    boolean false
                    char '\u0000' 空字符
                **堆内存中的实体不在被引用变量指向时,就变成了垃圾.
                  它会在jvm空闲的时候,有java的自动垃圾回收机制进行
                  清除.
        方法区:后面讲

        本地方法区:与系统相关的资源
        寄存器:与CPU相关的资源
    (5)数组常见问题
        A:角标越界 访问了不存在的角标.
            ArrayIndexOutOfBoundsException
        B:空指针异常 数组为null,我们还在通过它访问数组中的元素.
            NullPointException
    (6)数组常见操作 肯定离不开角标
        A:遍历
            数组的属性:length
            用法格式:数组名.length 获取数组的长度

         

  public static void printArray(int[] arr)
            {
                for(int x=0; x<arr.length; x++)
                {
                    System.out.println(arr[x]);
                }
            }



            //为了格式好看
        
   public static void printArray(int[] arr)
            {
                System.out.print("[");

                for(int x=0; x<arr.length; x++)
                {
                    if(x==arr.length-1)
                    {
                        System.out.print(arr[x]);
                    }
                    else
                    {
                        System.out.print(arr[x]+",");
                    }
                }

                System.out.println("]");
            }


        B:最值
            **最大值
              
 public static int getMax(int[] arr)
                {
                    int max = arr[0];
                    
                    //0角标的元素作为了参照物
                    for(int x=1; x<arr.length; x++)
                    {
                        if(arr[x]>max)
                        {
                            max = arr[x];
                        }
                    }

                    return max;
                }


            **最小值
             
  public static int getMin(int[] arr)
                {
                    int min = arr[0];

                    //0角标的元素作为了参照物
                    for(int x=1; x<arr.length; x++)
                    {
                        if(arr[x]<min)
                        {
                            min = arr[x];
                        }
                    }

                    return min;
                }


        C:排序
            **选择排序 用0角标的元素和其后元素依次比较,最值出现在左边.
                    
            
   public static void selectSort(int[] arr)
                {
                    for(int x=0; x<arr.length-1; x++)
                    {
                        //y总是比x大1
                        for(int y=x+1; y<arr.length; y++)
                        {
                            if(arr[y]<arr[x])
                            {
                                int temp = arr[x];
                                arr[x] = arr[y];
                                arr[y] = temp;
                            }
                        }
                    }
                }



            **冒泡排序   原理是 相邻元素两两相比,最值出现在右边.
                
           
    public static void bubbleSort(int[] arr)
                {
                    for(int x=0; x<arr.length-1; x++)
                    {
                        for(int y=0; y<arr.length-1-x; y++)
                        {
                            if(arr[y]>arr[y+1])
                            {
                                int temp = arr[y];
                                arr[y] = arr[y+1];
                                arr[y+1] = temp;
                            }
                        }
                    }
                }

      以前看过老师将的数组排序,其实数组的排序有很多种,其中冒泡排序和选择排序是最基本的最麻烦的排序算法,不过我感觉还行,自己代码没有必要一个不漏的背下来,只要自己知道原理就好了,在面试的时候也可以自己当场去总结其中的规律,直接就可以将代码写出来。


                             ----------------------android培训java培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值