2021-07-22

数组与字符串

数组(补充)

二维数组中,a.length表示行数,a[i].length表示第i行的列数

动态初始化时,多维数组的行数不可省略,列数可省略

 

数组与方法互操作

给一个方法中传入数组类型,在引用传递的情况下,如果新数组对值进行改变,则原数组的值也随之改变。

扩展数组值:

public class ArrayExpend {
    public static void main(String[] args) {
        int[] a = new int[]{1, 2, 3, 4};
        System.out.println("数组a:");
        arrayPrint(a);
 
        int[] result1 = arrayExpend(a);
        System.out.println("扩展结果:");
        arrayPrint(result1);
        System.out.println("after数组a:");
        arrayPrint(a);
 
        int[] result2 = arrayExpend2(a);
        System.out.println("扩展结果:");
        arrayPrint(result2);
        System.out.println("after数组a:");
        arrayPrint(a);
    }
 
    public static int[] arrayExpend(int[] a) {
        if (a == null) {
            return new int[]{};
        }
        //数组引用传递
        int[] temp = a;
        for (int i = 0; i < a.length; i++) {
            temp[i] = temp[i] * 5;
        }
        return temp;
    }
 
    public static int[] arrayExpend2(int[] a) {
        if (a == null) {
            return new int[]{};
        }
        //空间重新分配
        int[] temp = new int[a.length];
        for (int i = 0; i < a.length; i++) {
            temp[i] = a[i] * 4;
        }
        return temp;
    }
 
    public static void arrayPrint(int[] c) {
        if (c == null) {
            return;
        }
        for (int j = 0; j < c.length; j++) {
            System.out.print(c[j] + " ");
        }
        System.out.println();
    }
}

 

 

数字升序

java.util.Arrays.sort(arrayName)
import java.util.Arrays;
 
public class ArrayUtil {
    public static void main(String[] args) {
        int[] a = new int[]{1, 33, 5, 44, 76};//1,5,33,44,76
        System.out.println("排序之前:");
        arrayPrint(a);
        Arrays.sort(a);
        System.out.println("排序之后:");
        //改变原数组
        arrayPrint(a);
    }
 
    public static void arrayPrint(int[] c) {
        if (c == null) {
            return;
        }
        for (int j = 0; j < c.length; j++) {
            System.out.print(c[j] + " ");
        }
        System.out.println();
    }
}

 

将指定源数组中的数组从指定位置复制到目标数组的指定位置。

java.lang.System.arraycopy(Object src,int srcPos,Object dest, int destPos,int length);
public class ArrayUtil {
    //拷贝
    public static void main(String[] args) {
        int[] src = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
        int[] dest = new int[3];
        arrayPrint(src);
        arrayPrint(dest);
        //方法一
        // for(int i=2;i<5;i++){
        // dest[i-2]=src[i];
        // }
        //方法二
        System.arraycopy(src, 2, dest, 0, 3);
        arrayPrint(src);
        arrayPrint(dest);
    }
 
    public static void arrayPrint(int[] c) {
        if (c == null) {
            return;
        }
        for (int j = 0; j < c.length; j++) {
            System.out.print(c[j] + " ");
        }
        System.out.println();
    }
}

 

复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度。

java.util.Arrays.copyOf(源数组名称,新数组长度)
import java.util.Arrays;
 
public class ArrayUtil {
    public static void main(String[] args) {
        int[] src = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
        arrayPrint(src);
        int[] dest1 = Arrays.copyOf(src, 7);
        //Arrays.copyOf不改变原数组
        arrayPrint(src);
        arrayPrint(dest1);
        int[] dest2 = Arrays.copyOf(src, 10);
        arrayPrint(dest2);
    }
 
    public static void arrayPrint(int[] c) {
        if (c == null) {
            return;
        }
        for (int j = 0; j < c.length; j++) {
            System.out.print(c[j] + " ");
        }
        System.out.println();
    }
}

 

对象数组

初始化

//动态初始化
类名称[] 对象数组名称 = new 类名称[长度];
 
//静态初始化
类名称[] 对象数组名称 = new 类名称[] {};
public class ArrayOfObjects {
    //类方法
    public static void printArray(Person[] persons) {
        for (int i = 0; i < persons.length; i++) {
            System.out.println(persons[i]);
        }
    }
 
    public static void main(String[] args) {
        Person person = new Person(1, "唐僧");//email=null; phone=null;
        System.out.println(person);//person.toString(); ——继承自Object
 
        String s = "Bonjour";  //引用类型
        System.out.println(s);  //s.toString(); ——继承

----------------------------------------------------------------------------------------------------------------
//动态初始化 Person[] persons = new Person[3]; persons[0] = new Person(1, "Jack"); persons[1] = new Person(2, "Tom", "tom@gmail.com"); persons[2] = new Person(3, "Alice", "alice@gmail.com", "15265478955"); ArrayOfObjects.printArray(persons); //静态初始化 Person[] persons2 = new Person[]{ new Person(4, "Tony") }; ArrayOfObjects.printArray(persons2); } } class Person { private int id; private String name; private String email; private String phone; //构造方法 public Person(int id, String name) { this.id = id; this.name = name; } public Person(int id, String name, String email) { this(id, name); this.email = email; } public Person(int id, String name, String email, String phone) { this(id, name, email); this.phone = phone; }

---------------------------------------------------------------------------------------------------------------
//getter方法 public int getId() { return this.id; } public String getName() { return this.name; } public String getEmail() { return this.email; } public String getPhone() { return this.phone; }

--------------------------------------------------------------------------------------------------------------
//setter方法 public void setEmail(String email) { this.email = email; } public void setPhone(String phone) { this.phone = phone; } public String toString() { return " 编号:" + this.id + " 姓名:" + this.name + " 邮箱:" + this.email + " 电话:" + this.phone; } }