4数组

Posted mlyflow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4数组相关的知识,希望对你有一定的参考价值。

1、创建数组

  • 数组是相同类型数据的有序集合.相同类型的若干个数据,按照一定先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.
  • 数组特点:其长度是确定的。数组一旦被创建,它的大小就是不可以改变的; 其元素必须是相同类型,不允许出现混合类型;数组中的元素可以是任何数据类型,包括基本类型和引用类型。

  • 一维数组声明: type[] arr_name; type arr_name[];   Java中使用关键字new 创建数组对象
public class Test{
public static void main(String args[]){
int[] s = null;
s = new int[10];
for ( int i=0; i<10; i++ ) {
s[i] =2*i+1;
System.out.println(s[i]);
}
}
}
  • 引用数组生成:
 1 import java.lang.reflect.Array;
 2 
 3 public class BallGame {
 4 
 5     public static void main(String[] args) {
 6         User[] ints = new User[10];
 7         User user1 = new User(10,"13453");
 8         User user2 = new User(100,"xiaoming");
 9         ints[0] =  user1;
10         ints[1] =  user2;
11         System.out.println(ints[0].age);
12     }
13 }
14 
15 class User{
16     int age ;
17     String name;
18     public User(int age,String name){
19         this.age = age;
20         this.name = name;
21     }
22 
23 }

2、数组初始化

  • 静态初始化--->定义的时候直接赋值
public class BallGame {

    public static void main(String[] args) {
        //定义数组
        int[] ints = {1,2,3,4};
        for(int i=0;i<ints.length;i++){
            System.out.println(ints[i]);
        }
    }
}
  • 动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。
public class BallGame {

    public static void main(String[] args) {
        //定义数组
        int[] ints = new int[2];
        ints[0] = 0;
        ints[1] = 1;
        for(int i=0;i<ints.length;i++){
            System.out.println(ints[i]);
        }
    }
}
  • 默认初始化-->和成员变量默认赋值一样

技术图片

3、数组的拷贝

 

package cn.sxt.array2;

/**
 * 测试数组的拷贝
 * @author Administrator
 *
 */
public class TestArrayCopy {
    public static void main(String[] args) {
//        testBasicCopy2();
        
        String[] str = {"阿里","京东","尚学堂","百度","亚马逊"};
        
//        removeElment(str, 1);
    
        
        str = extendRange(str);
        
    }
    
    //数组拷贝
    public static void  testBasicCopy(){
        String[]  s1 = {"aa","bb","cc","dd","ee"};
        String[]  s2 = new String[10];
        System.arraycopy(s1, 2, s2, 6, 3);
        
        for(int i=0;i<s2.length;i++) {
            System.out.println(i+"--"+s2[i]);
        }
    }
    
    //测试从数组中删除某个元素(本质上还是数组的拷贝)
    public static void  testBasicCopy2(){
        String[]  s1 = {"aa","bb","cc","dd","ee"};
    //    String[]  s2 = new String[5];
        
        System.arraycopy(s1, 3, s1, 3-1, s1.length-3);
        
        s1[s1.length-1] = null;
        
        for(int i=0;i<s1.length;i++) {
            System.out.println(i+"--"+s1[i]);
        }
        
    }
    
    //删除数组中指定索引位置的元素,并将原数组返回
    public static String[]  removeElment(String[]  s, int index){
        System.arraycopy(s, index+1, s, index, s.length-index-1);
        s[s.length-1] = null;
        for(int i=0;i<s.length;i++) {
            System.out.println(i+"--"+s[i]);
        }
        return s;
    }
    
    
    //数组的扩容(本质上是:先定义一个更大的数组,然后将原数组内容原封不动拷贝到新数组中)
    public  static  String[]   extendRange(String[] s1){
//        String[]   s1 = {"aa","bb","cc"};
        
        String[]  s2 = new  String[s1.length+10];
        
        System.arraycopy(s1, 0, s2, 0, s1.length);   //就将s1中所有的元素拷贝到了s2
        
        for(String temp:s2){
            System.out.println(temp);
        }
        return  s2;
    }
    
    
    
    
    
}

4、array工具

 

package cn.sxt.array2;

import java.util.Arrays;

/**
 * 测试java.util.Arrays工具类的使用
 * @author Administrator
 *
 */
public class TestArrays {
    public static void main(String[] args) {
        
        int[]  a = {100,20,30,5,150,80,200};
        
        System.out.println(a);
        
        //打印字符串
        System.out.println(Arrays.toString(a));  
        //排序
        Arrays.sort(a); 
        System.out.println(Arrays.toString(a));  
        
        //二分法查找
        System.out.println(Arrays.binarySearch(a, 30));
        
        
        
    }
}

5、多维数组

 技术图片

  • 二维数组
package cn.sxt.array2;

/**
 * 测试二维数组
 * @author Administrator
 *
 */
public class Test2DimensionArray {
    
    public static void main(String[] args) {
//        int[]  a = new int[3];
//        Car[]  cars = new Car[3];
        
        int[][]  a = new  int[3][];
        
        a[0] = new int[]{20,30};
        a[1] = new int[]{10,15,80};
        a[2] = new int[]{50,60};
        
        System.out.println(a[1][2]);  

        
        //静态初始化二维数组
        int[][]  b = {
                {20,30,40},
                {50,20},
                {100,200,300,400}
        };
        
        System.out.println(b[2][3]);
        
        
    }
    
    
}


class Car{
    
}
  • 实例

 

package cn.sxt.array2;

import java.util.Arrays;

/**
 * 测试数组存储表格数据
 * @author Administrator
 *
 */
public class TestArrayTableData {
    public static void main(String[] args) {
        Object[]  emp1 = {1001,"sfs",18,"讲师","2006.6.6"};
        Object[]  emp2 = {1002,"sffs",19,"程序员","2016.6.6"};
        Object[]  emp3 = {1003,"sfsdfs",22,"销售","2026.6.6"};
        
        Object[][] tableData = new Object[3][];
        tableData[0] = emp1;
        tableData[1] = emp2;
        tableData[2] = emp3;
        
        for(Object[] temp: tableData){
            System.out.println(Arrays.toString(temp));
        }
        
        
    }
}

 

以上是关于4数组的主要内容,如果未能解决你的问题,请参考以下文章

在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]

以下代码片段的时间复杂度是多少?

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

JS常用代码片段-127个常用罗列-值得收藏

10个JavaScript代码片段,使你更加容易前端开发。