当前位置:   article > 正文

java数组知识_myarray

myarray

数组用来存储一个元素个数固定且元素类型相同的有序集。

  • 一维数组
  1. 声明数组变量:
    1. //一、元素类型[] 数组引用变量;(推荐使用)
    2. int[] myArray;
    3. //二、元素类型 数组引用变量[];
    4. int myArray[];
  2. 创建数组:不同于基本数据类型变量的声明,声明一个数组变量时并不在内存中给数组分配任何空间,只是创建了一个对数组的引用的存储位置。声明变量后,可以使用下面语法创建数组:这条语句做了两件事:1)使用new int[8]创建一个数组;2)把创建的数组的引用赋值给变量myArray。
    myArray = new int[8];//定义数组长度为8
  3. 声明、创建、引用赋值合并为一条语句:
    int[] myArray = new int[8];
  4. 匿名数组的创建
    1. //new 数据类型[] {值0,值1,值2,……,值n}
    2. printArray(new int[]{2,4,5,2,8});
    3. public static void printArray(int[] array){
    4. for (int i : myArray) {
    5. System.out.print(i+"");
    6. }

     

  5. 数组的大小和默认值:给数组分配空间时,必须指定该数组能够存储的元素个数来确定数组大小,数组创建后不能修改它的大小。数组创建后被赋予默认值,数值型基本数据类型的默认值为0,char型的默认值为‘\u0000’,boolean型的默认值为false。
  6. 数组下标变量:数组元素可以通过下标访问,下标基于0,范围从0开始到array.length-1结束。
  7. 数组初始化:
    1. //声明数组、创建数组、初始化数组合并到一句:元素类型[] 数组引用变量 = {key1,key2,...,keyn}
    2. int[] myArray = {1,2,3,4,,5,6};
  8. 数组处理:
  • for循环遍历:
  1. int[] myArray = {1,2,4,5,7,8,8};
  2. for (int i = 0; i < myArray.length; i++) {
  3. System.out.println(myArray[i]);
  4. }
  • 使用随机数初始化数组:
  1. int[] myArray = new int[8];
  2. for (int i = 0; i < myArray.length; i++) {//初始化为0到100(不包括)之间的随机整数
  3. myArray[i] = (int)(Math.random()*100);
  4. System.out.println(myArray[i]);
  5. }
  • 数组的显示:为了打印数组,必须使用类似以下的循环,打印数组中每个元素。(对于char[]类型的数组,直接使用    System.out.print(sourceArray)就可以,其他类型的数组打印出来是引用的地址)。
  1. int[] sourceArray = {1,2,3,4,5,6};
  2. for (int i = 0; i < sourceArray.length; i++) {
  3. System.out.print(sourceArray[i]+"");
  4. }
  • 打乱数组元素顺序:
    1. //针对每个元素myArray[i],随意产生一个下标index,然后将myArray[i]和myArray[index]交换
    2. for (int i = 0; i < myArray.length; i++) {
    3. int index = (int)(Math.random()*myArray.length);
    4. int tmp = myArray[i];
    5. myArray[i] = myArray[index];
    6. myArray[index] = tmp;
    7. }

     

  • 数组的复制:进行数组赋值时,可能会想到使用赋值语句(=),如下所示:该语句并不能将array1引用的数组内容赋值给array2,而只是将array1的引用值复制给了array2。在这条语句之后,两个数组都指向同一个数组的引用,
    array2 = array1;

       Java中,可以使用赋值语句复制基本数据类型的变量,但不能复制数组。将一个数组变量赋值给另一个数组变量,实际上是将一个数组的引用赋值给另一个变量,使两个变量都指向相同的内存地址

复制数组有三种方法:

  • 1)使用循环语句逐个的复制数组的元素:
  1. int[] sourceArray = {1,2,3,4,5,6};
  2. int[] targetArray = new int[sourceArray.length];
  3. for (int i = 0; i < sourceArray.length; i++) {
  4. targetArray[i] = sourceArray[i];
  5. }
  • 2)使用System类中的静态方法(java.lang.System包)arraycopy,arraycopy的语法如下(arraycopy方法没有给目标数组分配内存空间,复制前必须创建目标数组以及分配给它的内存空间):
  1. /*
  2. 参数src_pos和tar_pos分别表示在源数组sourceArray和目标数组targetArray中的起始位置,从sourceArray复制到targetArray中的元素个数由参数length指定。
  3. **/
  4. System.arraycopy(sourceArray,src_pos,targetArray,tar_pos,length);
  •  3)使用clone方法复制数组                                
  • 数组在方法中的传递:java使用值传递的方式将实参传递给方法,传递基本数据类型变量的值与传递数组值有很大区别:
对于基本数据类型参数,传递的是实参的值;对于数组类型参数,传递的是数组的引用(类似于C语言中的指针),所以,在方法中改变数组的内容,会看到方法外的数组也发生变化。
  • 从方法中返回数组:
  1. int[] myArray = {1,2,4,5,7,8,8};
  2. int[] myArray2 = reverse(myArray);
  3. //反序输出数组
  4. private static int[] reverse(int[] array) {
  5. int[] result = new int[array.length];
  6. for (int i = 0,j = result.length-1; i < result.length; i++,j--) {
  7. result[j] = array[i];
  8. }
  9. return result;
  10. }
  • 统计字符数组中每个字符出现的次数:
    1. public static void main(String[] args) {
    2. char[] array = getRandomCaseLetter(100);
    3. System.out.println(array);
    4. int[] counts = countLetters(array);
    5. for (int i : counts) {
    6. System.out.print(i+" ");
    7. }
    8. }
    9. /*
    10. * 统计每个字符出现的次数
    11. */
    12. private static int[] countLetters(char[] array) {
    13. int counts[] = new int[26];
    14. for (int i = 0; i < array.length; i++) {
    15. counts[array[i]-'a'] ++;
    16. }
    17. return counts;
    18. }
    19. /*
    20. * 产生长度为length的小写字母组成的随机字符数组
    21. * */
    22. private static char[] getRandomCaseLetter(int length) {
    23. char[] array = new char[length];
    24. for (int i = 0; i < array.length; i++) {
    25. array[i] = (char)('a'+ Math.random()*('z'-'a'+1));
    26. }
    27. return array;
    28. }

     

  • 将字符数组转换成字符串:

  1. char[] chs = {'2','3','5'};
  2. String seq = String.valueOf(chs);

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/567541
推荐阅读
相关标签
  

闽ICP备14008679号