数组的常用方法

  • Arrays.toString()     (打印数组)

Arrays.toString() 方法可以用来“打印”数组里的全部元素 ,(它返回一个字符串 ,这个字符串里有数组里的全部元素 ) ;

用法 :  System.out.println(  Arrays.toString(  要打印的数组  ) );

因为toString 方法返回的是一个字符串 , 所有可以用 sout 输出出来 ;

int [] array1 = {1,2,3,4,5} ;
System.out.println(Arrays.toString(array1));

 上面代码的输出结果就是 :       [1, 2, 3, 4, 5] 

 如果数组里的元素是 自定义类型 的 ,需要在这个自定义类里重写 toString()方法 ;

class  Student{                         //自定义的类
    int age ;
    String name ;

    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }

    @Override
    public String toString() {             //重写的toString 方法 
        return "Student{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

通过编译器 来快速重写 toString 方法 

 (在要重写toString方法的类里右击 或 按快捷键 Alt + Insert)

(选择toString() )

(编译器默认给我们把类的成员选好了,直接点ok就好了)

(这样就在这个类里重写了 toString 方法)

  Student[] students = {new Student(18,"张三"),
                              new Student(12,"李四"),
                              new Student(11,"王五")};
        System.out.println(Arrays.toString(students));

代码的输出结果为 :

 [Student{age=18, name='张三'}, Student{age=12, name='李四'}, Student{age=11, name='王五'}]

我们也可以修改重写的 toString 方法, 让它返回我们想要的格式 ;

  @Override
    public String toString() {
        return "{" +
                "年龄:" + age +
                ", 名字:" + name + '\'' +
                '}';
    }

这时候我们在运行一次代码的结果为:

      [{年龄:18, 名字:张三'}, {年龄:12, 名字:李四'}, {年龄:11, 名字:王五'}]
 

  • Arrays.copyOf()       (拷贝数组)

copyOf 方法把数组的元素拷贝到新的数组里,然后返回这个新数组 ;

(拷贝从 第一个元素开始 , 返回的数组大小是拷贝长度)

用法  :       Arrays.copyOf( 被拷贝的数组  ,  拷贝的长度  ) ;

  int[] array1 = {1, 2, 3, 4} ;
  int[] array2 ;
  array2 = Arrays.copyOf(array1 , 3) ;            
  System.out.println(Arrays.toString(array2));

上面代码输出的结果为 :      [1, 2, 3]

拷贝的原理 : 

一开始 array1 里有元素  1 ,2,  3, 4 ,而array2里还没有初始化;

 array2 = Arrays.copyOf(array1, 3);

当我们执行这一条代码,copyOf() 这个方法主要有三个步骤;

1.首先先创建一个数组

(这里创建了一个长度为3的新数组)

2.把要拷贝的数组里的元素赋值到新的数组里

(这时候的新数组里有{1,2,3})

3.把新的数组 赋给 array2 

这时候数组的拷贝就完成了

(此时的arra1和arr2里都有元素了)

拷贝的同时扩容

这时候我们可以发现,Arrays.copyOf() ,这个方法不止可以拷贝数组,还可以给数组扩容;

为什么可以给数组扩容?咱们要重新看看这个Arrays.copyOf()方法 ;

1.这里的这个3,是我们给的参数3 ,那么Arrays.copyOf()方法会按照我们给的 这个3 ,新建一个长度为3的新数组,然后在把array1里的元素拷贝到这个新数组里;

2. 那么 我们给比3更大的值给它,这个新建的数组不就更大了吗;

例如: 

因为我们给的新数组大小是5,所以创建了一个长度为5的数组,而array1里只有4个元素,所以空出来一个位置

代码

        int[] array1 = {1, 2, 3, 4};
        int[] array2 ;
        
       array2 =  Arrays.copyOf(array1 , 5);

3. 如果 我们 把 array2 = Arrays.copyOf(array1 , 5) ; 改成 array1 = Arrays.copyOf(array1 , 5 ) ;

让array1 来接收 我们拷贝出来的新数组, 就可以达到 给 array1扩容的效果

例如;

当然,拷贝方法里我们也可以不用直接的 给一个 8 的大小, 使用 数组的length属性来更好;

(array1.length * 2 相当于是让array1 扩容两倍)

  • Arrays.sort()      (给数组里的元素排序)

sort( 要排序的数组 ) 方法可以将数组里的元素排序好;

举个例子:

我们先定义一个数组

这个数组 array 里有7个元素,然后我们调用Arrays.sort();方法将array数组排序好;

 (Arrays.sort() 这个括号里放的是我们要排序的数组

这时候我们在调用我们上面提到的打印数组方法,把数组打印出来

这时候可以看到数组里的元素都按从小到大,升序排序好了;

代码

int[] array = {  13 , 1 , 34 , 8 , 9 , 10 , 3};
Arrays.sort(array);
System.out.println(Arrays.toString(array));

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值