java数组的创建及常用操作

来源:互联网 发布:java小数点后保留一位 编辑:程序博客网 时间:2024/05/16 13:57

数组

概念

同一种类型数据的集合。其实数组就是一个容器。

数组的好处

可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

示例:int[] arr = new int[5];

格式2

元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

int[] arr = new int[]{3,5,1,7};

int[] arr = {3,5,1,7};


1、一维数组的声明方式:元素类型[ ]  数组名   或者   元素类型  数组名[ ]

附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示: 元素类型[ ] 是一种引用类型(数组)而不是元素类型。不建议使用第二种方式
下面是典型的声明数组的方式:
 // 声明整型数组      int[] intArray0 ;       int intArray1[];
 // 声明浮点型数组    float[] floatArray0 ;   float floatArray1[]; 
 // 声明布尔型数组    boolean[] boolArray0 ;  boolean boolArray1[];  
 // 声明字符型数组   char[] charArray0 ;     char charArray1[]; 
 // 声明字符串数组    String[] stringArray0;  String stringArray1[];
 // 错误的声明数组的方式,声明数组的时候不能指定其大小   // int [5] intErrorArray0;   // int intErrorArray1[5];
注:
        Java语言中声明数组时不能指定其长度(数组中元素的个数),这是因为数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定一个了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。而且由于定义数组仅仅只是定一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。

2、一维数组的创建(初始化
     数组的初始化分为静态初始化、动态初始化和默认初始化:
     静态初始化是数组在初始化时由程序员显式指定每个数组元素的初始值而数组长度由系统决定。
     动态初始化是数组在初始化时只指定数组长度,由系统为数组元素分配初始值。
  // 静态初始化    int intArray2 [] = new int[]{20,21,22};
   // 静态初始化简化方式   int intArray3 [] = {30,31,32};
   // 动态初始化     int[] intArray4 = new int[3];          
 // 错误写法:静态初始化不能指定元素个数   // int intErrorArray5[] = new int[3]{50,51,52};
 // 错误写法:动态初始化必须指定元素个数   // int intErrorArray6[] = new int[];
注:
         一维数组这一块记住两点,数组声明的时候是不能指定大小的,也就是说等号左边的中括号中不能包含数字。另外一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。数组是对象数据类型
 数组进行动态初始化时系统分配初始值的规则
         数组元素类型是基本类型中的整数类型(byte、short、int、long),则数组元素的值是0
         数组元素类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0
         数组元素类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'
         数组元素类型是基本类型中的布尔类型(boolean),则数组元素的值是false
         数组元素类型是基本类型中的引用类型(类、接口、数组),则数组元素的值是null

Java中对Array数组的常用操作

目录:

  1. 声明数组;
  2. 初始化数组;
  3. 查看数组长度;
  4. 遍历数组;
  5. int数组转成string数组;
  6. 从array中创建arraylist;
  7. 数组中是否包含某一个值;
  8. 将数组转成set集合;
  9. 将数组转成list集合;
  10. Arrays.fill()填充数组;
  11. 数组排序;
  12. 复制数组;
  13. 比较两个数组;
  14. 去重复;
  15. 查询数组中的最大值和最小值;

备注:文内代码具有关联性。

1.声明数组;

1
2
3
4
String [] arr;
int arr1[];
String[] array=new String[5];
int score[]=new int[3];

 

2.初始化数组;

1
2
3
4
5
6
7
8
9
10
//静态初始化
int arr2[]=new int[]{1,2,3,4,5};
String[] array1={"马超","黄忠","关羽","刘备","张飞"};
String[] array2=new String[]{"貂蝉","虞姬","孙尚香","大乔","小乔","武则天"};
int score[]=new int[3];
//动态初始化
for(int i=0;i<score.length;i++)
{   
  score[i]=i+1
}

 

 

3.查看数组长度;

1
2
int length=array1.length;
System.out.println("length:  "+array1.length);

 

4.遍历数组;

1
2
3
for (int i = 0; i < array1.length; i++) {
    System.out.println(array1[i]);
}

 

5.int数组转成string数组;

1
2
3
int[]  array3={1,2,3,4,5,6,7,8,9,0};
        String arrStrings=Arrays.toString(array3);
        System.out.println(arrStrings);

 

 6.从array中创建arraylist;

1
2
ArrayList<String> arrayList=new ArrayList<String>(Arrays.asList(array1));
System.out.println(arrayList);

 

7.数组中是否包含某一个值;

1
2
3
4
5
String a="马超";
String[] array1={"马超","黄忠","关羽","刘备","张飞"};
if (Arrays.asList(array1).contains(a)) {
    System.out.println("马超在这里");
}

 

8.将数组转成set集合;

1
2
3
String[] array2=new String[]{"貂蝉","虞姬","孙尚香","大乔","小乔","武则天"};
    Set<String> set=new HashSet<String>(Arrays.asList(array2));
    System.out.println(set);

 

9.将数组转成list集合;

1
2
3
4
5
6
7
8
9
10
11
String[] array2=new String[]{"貂蝉","虞姬","孙尚香","大乔","小乔","武则天"};
//方法 1.
List<String> list=new ArrayList<String>();
for (int i = 0; i < array2.length; i++) {
    list.add(array2[i]);
}
 
String[] arrStrings2={"1","2","3"};
//方法 2.
List<String > list2=java.util.Arrays.asList(arrStrings2);
System.out.println(list2);

 

10.Arrays.fill()填充数组;

1
2
3
4
5
6
int[] arr3=new int[5];
        Arrays.fill(arr3, 10);  //将数组全部填充10
               //遍历输出
        for (int i = 0; i < arr3.length; i++) {
            System.out.println(arr3[i]);
        }

 

11.数组排序;

1
2
3
4
5
6
7
8
9
10
11
12
//方法 1.
int[] arr4 = {37219};
Arrays.sort(arr4);         //.sort(int[] a)   放入数组名字
for (int i = 0; i < arr4.length; i++) {
    System.out.println(arr4[i]);
}
//方法 2.        
int[] arr5 = {37219,3,45,7,8,8,3,2,65,34,5};
Arrays.sort(arr5, 14);  //.sort(a, fromIndex, toIndex)    从第几个到第几个之间的进行排序
for (int i = 0; i < arr5.length; i++) {
        System.out.println(arr5[i]);
}

 

12.复制数组;

1
2
3
4
5
6
7
8
//方法 1.
int[] arr6 = {3721};
int[] arr7=Arrays.copyOf(arr6, 10);  //指定新数组的长度
//方法 2.        
int[] arr8=Arrays.copyOfRange(arr6, 13); //只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)
for (int i = 0; i < arr8.length; i++) {
        System.out.println(arr8[i]);
}

 

13.比较两个数组;

1
2
3
int[] arr9 = {1234,5,6,7,8,9,0};
        boolean arr10=Arrays.equals(arr6, arr9);
        System.out.println(arr10);

 

14.去重复;

1
2
3
4
5
6
7
8
9
10
11
12
13
int[] arr11 = {1234,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
//利用set的特性
Set<Integer> set2=new HashSet<Integer>();
for (int i = 0; i < arr11.length; i++) {
    set2.add(arr11[i]);
}
System.out.println(set2);
int[] arr12 = new int[set2.size()];
int j=0;
for (Integer i:set2) {
    arr12[j++]=i;
}
System.out.println(Arrays.toString(arr12));

 

15.查询数组中的最大值和最小值;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int[] arr11 = {10234,5,6,7,8,9,0,3,2,4,5,6,7,4,32,2,1,1,4,6,3};
 //计算最大值
int max = arr11[0];
for (int i = 1; i < arr11.length; i++) {
     if (arr11[i] > max) {
         max = arr11[i];
    }
  }
  System.out.println("Max is " + max);
  //计算最小值
  int min = arr11[0];
  for (int i = 0; i < arr11.length; i++) {
    if (arr11[i]<min) {
        min = arr11[i];
    }
}
  System.out.println("Min is " + min);