黑马程序员 java入门:数组

来源:互联网 发布:家用交换机推荐 知乎 编辑:程序博客网 时间:2024/04/27 20:13

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

数组的概念:同一种类型数据的集合,其实数组就是一个容器

数组的好处:可以自动给树组中的元素从0开始编号,方便操作这些元素

格式1:

元素类型[ ] 数组名=new 元素类型[元素个数或长度];

示例:

int[] arr=new int[5];


class ArrayDemo{public static void main(String[] args){//需求:想定义一个可以存储3个整数的容器int[] x=new int[3];System.out.println(" ");}}

格式2:

元素类型[] 数组名=new元素类型[]{元素,元素,......};

int [] arr=new int [] {3,4,5,6};

int [] arr={3,4,5,6};


class ArrayDemo2{public static void main(String[] args){//int[] arr=new int[2];//int arr[]=new int[2];//int[] arr=new int [] {3,4,5,6,7};//int [] arr={3,4,5,6,7};//数据明确//int[] arr=new int [5];//数据不明确//arr[0]=90;//arr[1]=80;int[] arr=new int[3];System.out.println(arr[3]);//编译错误,角标越界int[] arr=new int[3];arr=null;  System.out.println(arr[3]);//空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体}}

栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放

堆内存:

数组和对象,通过new建立的实例都存放在堆内存中

每一个实体都有内存地址值

实体中的变量都有默认初始化值

实体不在被使用,会在不确定的时间内被垃圾回收器回收


数组遍历

class ArrayDemo3{public static void main(String[] args){//数组的操作//获取数组中的元素,通常会用到遍历//有数组的时候通常会用到for循环//int[] arr=new int [3];int[] arr={3,6,5,1,8,9};//数组中有一个属性可以直接获取到数组元素个数:length//使用方式:数组名称.length=//System.out.println("length:"+arr.length);//int sum=0;/*for(int x=0;x<arr.length;x++){sum+=arr[x];System.out.println("arr["+0+"]"+arr[x]+";");//arr[0]=0;}*/printArray(arr);}//定义一个功能,用于打印数组中的元素,元素间用逗号隔开public static void printArray(int[] arr){for(int x=0;x<arr.length;x++){System.out.print("[");if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}}}


获取最值

/*

定义一个数组{5,1,6,4,2,8,9}

1.获取数组中的最大值,以及最小值

*/

class ArrayTest{/*获取数组鲜红的最大值思路:1.获取最值需要进行比较,每一次比较都会有一个较大的值,因为该值不确定通过一个变量进行临时存储2.让数组中的每一个元素都和这个变量中的值进行比较如果大于了变量中的值,就用该变量记录较大的值3.当所有的元素都比较完成,那么该变量中存储的就是数组中的最大值了步骤:1.定义变量,初始化为数组中任意一个元素即可2.通过循环语句对数组进行遍历3.在变量过程中定义判断条件,如果遍历到的元素比变量中的元素打,就赋值给该变量需要定义一个功能来完成,以便提高复用性1.明确结果,数组中的最大元素 int、、2.未知内容:一个数组 int*/public static int getMax(int[] arr){int max =arr[0];for (int x=1;x<arr.length;x++){if(arr[x]>max)max=arr[x];}return max;   }/*获取最大值的另一种方式可不可以将临时变量初始化为0呢?可以,这种方式其实是在初始化为数组中任意一个角标*/public static int getMax_2(int[] arr){int max =0;for (int x=1;x<arr.length;x++){if(arr[x]>max)max=x;}return max;   }/*获取最小值*/public static void getMin(int[] arr){int min=0;for(int x=1;x<arr.length;x++){if (arr[x]<arr[min])min=x;}return arr[min];}/*//获取double类型数组的最大值,因为功能一致,所以定义相同函数名称,以重载形式存在puboic static double getMax(double[] arr){}*/public static void mian(String[] args){int[] arr={5,1,6,4,2,8,9};int max=getMax(arr);int max=getMax_2(arr);System.out.println("max="+max);System.out.println("min="+min);}}


排序问题

/*

对给定数组进行排序{5,1,6,4,2,8,9}

选择排序:内循环结束一次,最值出现头角标位置上

*/

class ArrayTest2{public static void selectSort(int[] arr){for (int x=0;x<arr.lnegth-1;x++){for(int y=x+1;y<arr.length;y++){if (arr[x]>arr[y]){int temp=arr[x];arr[x]=arr[y];arr[y]=temp;}}}}public static void main(String[] args){int[] arr={5,1,6,4,2,8,9};//排序前printArray(arr);//排序selectSort(arr);//排序后printArray(arr);}public static void printArray(int[] arr){for(int x=0;x<arr.length;x++){System.out.print("[");if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}}}

/*

冒泡排序:相邻的两个元素进行比较,如果符合条件换位

第一圈:最值出现在最后位

*/

class ArrayTest2{public static void bubbleSort(int[] arr){for (int x=0;x<arr.lnegth-1;x++){for(int y=0;y<arr.length-x-1;y++)//-x:让每一次比较的元素减少;-1:避免角标越界{if (arr[y]>arr[y+1]){int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;}}}}public static void main(String[] args){int[] arr={5,1,6,4,2,8,9};//排序前printArray(arr);//排序bubbleSort(arr);//排序后printArray(arr);}public static void printArray(int[] arr){for(int x=0;x<arr.length;x++){System.out.print("[");if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}}}

/*

位置置换功能抽取

发现无论什么排序,都需要满足条件的元素进行位置置换

所以可以把这部分相同的代码提取出来,单独封装成一个函数

*/


class ArrayTest2{public static void bubbleSort(int[] arr){for (int x=0;x<arr.lnegth-1;x++){for(int y=0;y<arr.length-x-1;y++)//-x:让每一次比较的元素减少;-1:避免角标越界{if (arr[y]>arr[y+1]){swap(arr,y,y+1);}}}}public static void swap(int[] arr,int a,int b){int temp=arr[a];arr[a]=arr[b];arr[b]=temp;}public static void main(String[] args){int[] arr={5,1,6,4,2,8,9};printArray(arr);}public static void printArray(int[] arr){for(int x=0;x<arr.length;x++){System.out.print("[");if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}}}

//Array.sort(arr);:java中已经定义好的一种排序方式,开发中,对数组排序要使用该句代码


进制转换