java--summary3数组

1.一维数组
数组作为对象允许使用new关键字进行内存分配,在使用数组之前,必须定义数组变量所属的类型–声明数组
格式:两种方法
数组元素类型 数组名字[];
数组元素类型[] 数组名字;

eg. int arr[];
String[] str;
声明数组后还不能访问他的任何元素,要想真正使用数组还需要给他分配内存空间,且分配内存空间还必须指明数组的长度
数组名字=new 数组元素类型[数组元素的个数]

eg.arr=new int[5];
使用new为数组分配内存的时候,数组中的各个元素的初始值都为0;
创建数组和分配内存不一定要分开执行,可以创建数组时直接为变量赋值格式:
数组元素类型 数组名[]=new 数组元素类型[数组元素的个数]
eg. int month[]=new int [12];

2.初始化一维数组两种方式初始化一维数组
int arr[]=new int[]{4,25,3,26,5,7,9,21,10,14};
int arr2[]={4,25};//编译器将根据初始化的数量来自动计算数组的长度并创建数组

package com.company;
        public class Main {
            public static void main(String[] args) {      
                      int num[]={1,2,3,4,5,6,7,8,9,10};      
                                int sum=0;         
                                       System.out.println("一维数组中个元素的和是:");                       for(int i=0;i<10;i++){       
                                     if(i==9){       
                                                    System.out.print(num[i]+"=");           
                                                         }else{       
           System.out.print(num[i]+"+");              
               }             
                    sum+=num[i];         
                         }      
                         System.out.print(sum);    }}

1+2+3+4+5+6+7+8+9+10=55

//输出数组最小的值package com.company;public class Main {  
  public static void main(String[] args) {     
     int num[]={3,2,1,6,7,100};      
       int min=num[0];      
         for(int i=1;i<6;i++)        
             if(num[i]<min)           
                  min=num[i];   
                  System.out.println(min);  
                    }}

3.二维数组
声明二维数组有两种:
数组元素类型 数组名字[][];
数组元素类型[][] 数组名字
int myarr[][];
声明数组后还不能访问他的任何元素,要想真正使用数组还需要给他分配内存空间,且分配内存空间二维数组可以由多个一维数组所组成,在给二维数组分配空间时,可以为这些一维数组同时分配相同的内存。第一个中括号中的数字是一维数组的个数,第二个中括号中的数字是一维数组的长度a=new int[2][4];为二维数组分配内存,分配后二维数组a拥有两个长度是4的一维数组
length=2 length=4
a[0] — a[0][0] a[0][1] a[0][2] a[0][3]

                   length=4

a[1] — a[1][0] a[1][1] a[1][2] a[1][3]

在给二维数组分配内存时,还可以对其每一个一维数组单独分配内存空间,且分配的内存可以不同,在第一个中括号中定义一维数组的个数,然后就利用一维数组分配内存的方法分配内存

eg.a=new int[2][];
a[0]=new int[2];
a[1]=new int [3];
为二维数组分配内存,先给二维数组分配2个一维数组,然后对第一个一维数组分配内存2,对第二个二维数组分配内存3
length=2 length=2 a[0]---- a[0][0] a[0][1]
length=3 a[1]-----a[1][0] a[1][1] a[1][2]

4.二维数组的初始化
type arrayname[][]={value1,value2,value3—valuen}int myarr[][]={{2,10},{3,10});对于整形二维数组,创建成功后会给数组的每个元素赋值为0;

package com.company;
public class Main {
    public static void main(String[] args) { 
        int a[][]=new int[3][5];
             System.out.println("输出3行5列的数组:");     
             for (int i=0;i<a.length;i++) {
                      for (int j = 0; j < a[i].length; j++)   
                                System.out.print(a[i][j] + " ");
                                         System.out.println();
                                              }    }}
                                  输出3行5列的数组:0 0 0 0 0
                                                                   0 0 0 0 0
                                                                    0 0 0 0 0 

4.三维数组初始化三维数组时,由3层大括号进行初始化。package com.company;public class Main {
public static void main(String[] args) {
int arr[][][]=new int[][][]{
{{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}, {{13,14,15},{16,17,18}}}; for(int i=0;i<arr.length;i++){
System.out.println(“三维数组的的第”+(i+1)+“个元素是一个”+arr[0].length+“维数组,内容如下:”);
for(int j=0;j<arr[0].length;j++) {
for (int k = 0; k < arr[0][0].length; k++) {
System.out.print(arr[i][j][k] + “\t”); } System.out.println(); } } }}三维数组的的第1个元素是一个2维数组,内容如下:1 2 3 4 5 6 三维数组的的第2个元素是一个2维数组,内容如下:7 8 9 10 11 12 三维数组的的第3个元素是一个2维数组,内容如下:13 14 15 16 17 18

求二维数组的对角线之和(迹)    public static void main(String[] args) {        int arr[][] = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};        int tr = 0;        for (int i = 0; i < arr.length; i++) {            for (int j = 0; j < arr.length; j++) {                System.out.print(arr[i][j] + " ");            }            System.out.println();
        }        for (int i = 0; i < arr.length; i++) {            tr += arr[i][i];        }        System.out.println("tr:" + tr);
    }}
数组的基本操作1.遍历数组遍历一维数组package com.company;public class Main {    public static void main(String[] args) {
       int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};       for(int i=0;i<12;i++){           System.out.print((i+1)+"月有"+day[i]+"天"+"\t");           if((i+1)%3==0){               System.out.println();           }       }
    }}1月有31天	2月有28天	3月有31天	4月有30天	5月有31天	6月有30天	7月有31天	8月有31天	9月有30天	10月有31天	11月有30天	12月有31天	


package com.company;//遍历二维数组public class Main {    public static void main(String[] args) {        int b[][] = new int[][]{{1}, {2, 3}, {4, 5, 6}};        System.out.println("二维数组是:");        for (int k = 0; k < b.length; k++) {            for (int c = 0; c < b[k].length; c++) {                System.out.print(b[k][c] + " ");            }            System.out.print("\n");        }    }}二维数组是:1 2 3 4 5 6 
填充替换数组元素1.fill(int[] a,int value)a:要进行元素替换的数组value:要储存数组中所有元素的值返回值:填充后的数组package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {             int arr[]=new int[5];             Arrays.fill(arr,8);             for(int i=0;i<arr.length;i++){                 System.out.println("第"+(i+1)+"个元素是:"+arr[i]);    }
    }}2.fill(int[] a,int fromIndex,int toIndex,int value)a:要进行元素替换的数组fromIndex:要使用指定填充的第一个元素的索引(包括)toIndex:要使用指定填充的最后一个元素的索引(不包括)value:要储存数组中所有元素的值返回值:填充后的数组如果toIndex==fromIndex,则填充范围为空
package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {            int arr[]=new int[]{45,12,2,10,1};            Arrays.fill(arr,1,3,8);             for(int i=0;i<arr.length;i++)                 System.out.println("第"+(i+1)+"个元素是:"+arr[i]);
    }}
2.对数组进行排序Arrays.sort(object)object:指进行排序的数组名称package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {           int arr[]=new int[]{23,42,12,8,5,10};           for (int i=0;i<arr.length;i++){               System.out.print(arr[i]+" ");           }           Arrays.sort(arr);           System.out.println("\n升序排列后的数组是:");           for(int i=0;i<arr.length;i++) {               System.out.print(arr[i] + " ");           }    }}23 42 12 8 5 10 升序排列后的数组是:5 8 10 12 23 42 
3.复制数组copyOf()方法是复制数组指定长度,copyOfRange()方法则指定数组的指定长度复制到一个新数组中
(1)copyOf()方法copyOf(arr,int newlength)arr:要进行复制的数组newlength:int 型变量,指复制后的新数组的长度。如果新数组的长度大于数组arr的长度,则用0填充(整形数组用0填充,char型数组则会使用null来填充),如果复制后的数组长度小于数组arr的长度,则会从数组arr的一个元素开始截取至满足新数组长度为止package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {    int arr[]=new int[]{23,42,12};    System.out.println("复制后后的数组是:");    for(int i=0;i<arr.length;i++){        System.out.print(arr[i]+" ");    }    int newarr[]=Arrays.copyOf(arr,5);    System.out.println("\n复制后的数组是:");    for(int i=0;i<newarr.length;i++){        System.out.print(newarr[i]+" ");    }    }}复制后后的数组是:23 42 12 复制后的数组是:23 42 12 0 0 
(2)copyOfRange()方法copyOfRange(arr,int formIndex,int toIndex)arr:要进行复制的数组对象formIndex:指定开始复制数组的索引位置,formIndex必须在0至整个数组的长度之间。新数组包括索引是formIndex的元素toIndex:要复制范围的最后索引位置。可以大于数组arr的长度,新数组不包括索引是toIndex的元素
package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {      int arr[]=new int[]{23,42,12,84,10};      System.out.println("原来的数组是:");      for(int i=0;i<arr.length;i++){       System.out.print(arr[i]+" ");      }      int newarr[]=Arrays.copyOfRange(arr,0,3);      System.out.println("\n将数组下标0-3复制到新数组中:");      for(int i=0;i<newarr.length;i++)          System.out.print(newarr[i]+" ");    }}原来的数组是:23 42 12 84 10 将数组下标0-3复制到新数组中:23 42 12 
4.排序package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {       int array[]=new int[]{63,4,253,1,23};        for(int i=1;i<array.length;i++){//冒泡排序            for(int j=0;j<array.length-i;j++){                if(array[j]>array[j+1]){                    int t=array[j];                    array[j]=array[j+1];                    array[j+1]=t;
                }
            }
        }        for(int i=0;i<array.length;i++)            System.out.print(array[i]+" ");    }}

package com.company;import java.util.Arrays;public class Main {    public static void main(String[] args) {     int array[]=new int[]{20,40,90,30,80,70,50};        System.out.println("排序前:");        for(int i=0;i<array.length;i++){            System.out.print(array[i]+" ");        }            int t,j;        for(int i=1;i<array.length;i++){            t=array[i];            for(j=i-1;j>=0&&array[j]>t;j--){                array[j+1]=array[j];
            }            array[j+1]=t;        }        System.out.println("\n排序后:");        for(int i=0;i<array.length;i++){            System.out.print(array[i]+" ");        }    }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值