本文重在温习……不过初学以及进阶高手不可错过

1.  public static void arraycopy(全小写)(object src,int srcPos,object dest,int destPos,int length)

 1 package b;
 2 /*
 3  * 使用java.lang.System类的静态方法,使用for循环一个一个拷贝会很慢,由于数组
 4  * 在内存里往往都是连续的区域,因此最有效率的往往是直接拷贝内存。
 5  * public static void arraycopy(全小写)(object src,int srcPos,object dest,int destPos,int length)
 6  * 如果超过目标数组的边界,则会抛出数组越界异常。 
 7  */
 8 public class ArrayCopy {
 9     //没加上String args[]时运行的话还是前一个运行过的程序的结果。
10     public static void main(String args[]) {
11         String src[] = {"Microsoft","IBM","Sun","Oracle"};
12         String dest[]= new String[6];
13         System.arraycopy(src,0,dest,0,src.length);
14         //拷贝是并不是真的真考,而是dest数组在堆里也指向那几个公司,那几个公司在堆内存里还是只有一份。
15         for(int i=0; i<dest.length; i++) {
16             System.out.println(dest[i]);//会打印null值
17             
18         }
19         System.out.println("----------------");
20         int a[][] = {{1,2},{1,2,3},{3,4}};//里面还是用大括号不是小括号
21         int b[][] = new int[3][];//此时第一维里是null,第二维里才是0
22         System.arraycopy(a,0,b,0,a.length);
23         /*
24          * 原数组的内容在堆内存里还是只有一份不是两份,由于指向的是同一块内存,
25          * 因此对dest的操作相当于对src的操作。
26          */
27         b[2][1] = 100;
28         for(int i=0; i<a.length; i++) {
29             for(int j=0; j<a[i].length; j++) {
30                 System.out.println(a[i][j]);
31             }
32         }
33         System.out.println("---OK---");
34         
35     }
36 }
View Code

相关文章:

  • 2021-12-09
  • 2021-06-20
  • 2021-11-01
  • 2021-07-09
  • 2021-12-29
  • 2021-12-23
  • 2023-01-11
猜你喜欢
  • 2021-12-23
  • 2022-12-23
  • 2021-06-11
  • 2021-05-27
  • 2022-01-17
  • 2022-01-17
  • 2021-12-23
相关资源
相似解决方案