当前位置:   article > 正文

Java学习(4)—— 数组_java string[] array

java string[] array

数组(Array):是多个相同类型的数据按一定顺序排列的集合。

特点:(1)数组是有序排列的;(2)数组属于引用数据类型的变量。数组中的元素可以是基本数据类型,也可以是引用数据类型;(3)数组对象在内存中占一整块连续的空间;(4)数组的长度一旦确定就不能修改。

一.   一维数组

  1. public class Test{
  2. public static void main(String[] args) {
  3. //1. 数组的初始化
  4. //生成一个int型的数组
  5. int[] age = new int[]{18,19,20,21,22}; //静态初始化:数组的初始化和数组元素的赋值同时进行
  6. //生成一个String型的数组
  7. String[] name = new String[5]; //动态初始化:数组的初始化和数组元素的赋值分开进行
  8. //2. 调用数组指定位置的元素(数组的索引是从0开始)
  9. name[0] = "王";
  10. name[1] = "杨";
  11. name[2] = "刘";
  12. name[3] = "张";
  13. name[4] = "赵";
  14. System.out.println(age[0]); //18
  15. System.out.println(name[1]); //杨
  16. //3. 获取数组的长度
  17. System.out.println(name.length); //5
  18. System.out.println(age.length); //5
  19. //4. 遍历数组元素
  20. for(int i = 0; i < name.length; i++){
  21. System.out.println(name[i]);
  22. }
  23. //5. 数组元素的默认初始化值
  24. int[] array1 = new int[4];
  25. System.out.println(array1); //结果是指向数组array1的地址
  26. System.out.println(array1[0]); //数组是整型:0
  27. double[] array2 = new double[4];
  28. System.out.println(array2); //结果是指向数组array2的地址
  29. System.out.println(array2[0]); //数组是浮点型:0.0
  30. boolean[] array3 = new boolean[4];
  31. System.out.println(array3[0]); //数组是布尔型:false
  32. String[] array4 = new String[4];
  33. System.out.println(array4[0]); //数组是字符串类型:null
  34. }
  35. }

二.   二维数组

  1. public class Test{
  2. public static void main(String[] args) {
  3. //1. 二维数组的初始化
  4. //生成一个int型的数组
  5. int[][] age = new int[][]{{5,6,7,8},{18,19,20},{40,41}}; //静态初始化:数组的初始化和数组元素的赋值同时进行
  6. //生成一个String型的数组
  7. String[][] name1 = new String[3][2]; //动态初始化1:内层元素的个数固定为2,name1 = [[2个元素],[2个元素],[2个元素]]
  8. String[][] name2 = new String[3][]; //动态初始化2:内层元素的数量不固定
  9. //2. 调用数组指定位置的元素(数组的索引是从0开始)
  10. System.out.println(age[1][2]); //20
  11. name1[0][0] = "王";
  12. name1[0][1] = "杨";
  13. name1[1][0] = "刘";
  14. name1[1][1] = "张";
  15. name1[2][0] = "金";
  16. name1[2][1] = "朱";
  17. System.out.println(name1[1][0]); //刘
  18. name2[0] = new String[3];
  19. name2[1] = new String[4];
  20. name2[2] = new String[2];
  21. //以上的形式相当于name2 = [[3个元素],[4个元素],[2个元素]]
  22. name2[1][1] = "杨";
  23. System.out.println(name2[1][1]); //杨
  24. //3. 获取数组的长度
  25. System.out.println(age.length); //3
  26. System.out.println(age[0].length); //4
  27. System.out.println(age[2].length); //2
  28. //4. 遍历数组元素
  29. for(int i = 0; i < age.length; i++){
  30. for(int j = 0; j < age[i].length; j++){
  31. System.out.print(age[i][j] + " ");
  32. }
  33. System.out.println();
  34. }
  35. //5. 数组元素的默认初始化值:(1)动态初始化1:外层元素为地址,内层元素与一维数组相同;(2)动态初始化2:外层元素为null,内层元素会报错
  36. int[][] array1 = new int[4][3];
  37. System.out.println(array1); //结果是指向二维数组array1的地址
  38. System.out.println(array1[0]); //结果是指向一维数组array1[0]的地址
  39. System.out.println(array1[0][0]); //数组是整型:0
  40. double[][] array2 = new double[4][3];
  41. System.out.println(array2); //结果是指向二维数组array2的地址
  42. System.out.println(array2[0]); //结果是指向一维数组array2[0]的地址
  43. System.out.println(array2[0][0]); //数组是浮点型:0.0
  44. boolean[][] array3 = new boolean[4][3];
  45. System.out.println(array3[0][0]); //数组是布尔型:false
  46. String[][] array4 = new String[4][3];
  47. System.out.println(array4[0][0]); //数组是字符串类型:null
  48. double[][] array5 = new double[4][];
  49. System.out.println(array5[0]); //null,不管声明为什么类型的数组,都为null
  50. //System.out.println(array5[0][0]); //报错
  51. }
  52. }

三.   数组复制

  1. public class Test{
  2. public static void main(String[] args) {
  3. int[] array1 = new int[]{5,6,7,8};
  4. int[] array2;
  5. array2 = array1; //不能实现数组的复制
  6. array2[0] = 13;
  7. System.out.println(array1[0]); // array1[0] = 13,堆中只有一个数组,array2 = array1是将array1的地址赋值给array2
  8. //数组的复制
  9. int[] array3 = new int[]{5,6,7,8};
  10. int[] array4 = new int[array3.length];
  11. for(int i = 0; i < array3.length; i++){
  12. array4[i] = array3[i];
  13. }
  14. }
  15. }

四.   查找

1. 线性查找

  1. public class Test{
  2. public static void main(String[] args) {
  3. String[] array = new String[]{"A","B","C","D","E","F"};
  4. String index = "B";
  5. for(int i = 0; i < array.length; i++){
  6. if(index.equals(array[i])){
  7. System.out.println(i);
  8. break;
  9. }
  10. }
  11. }
  12. }

2. 二分法查找

  1. public class Test{
  2. public static void main(String[] args) {
  3. int[] array = new int[]{5,12,13,18,22,24,28,32};
  4. int index = 22;
  5. int head = 0;
  6. int end = array.length;
  7. while(head <= end){
  8. int middle = (head + end)/2;
  9. if(array[middle] == index){
  10. System.out.println(middle);
  11. break;
  12. }else if(array[middle] > index){
  13. end = middle - 1;
  14. }else if(array[middle] < index){
  15. head = middle + 1;
  16. }
  17. }
  18. }
  19. }

五.   排序

  冒泡排序

  1. public class Test{
  2. public static void main(String[] args) {
  3. int[] array = new int[]{97,15,85,64,22,53,46,25,18,32};
  4. for(int i = 0; i < array.length - 1; i++){
  5. for(int j = 0; j < array.length - 1 - i; j++){
  6. if(array[j] > array[j + 1]){
  7. int temp = array[j+1];
  8. array[j+1] = array[j];
  9. array[j] = temp;
  10. }
  11. }
  12. }
  13. for(int i = 0; i < array.length; i++){
  14. System.out.print(array[i] + " ");
  15. }
  16. }
  17. }

六.   Arrays类

举例:以下的数据类型可以是任意的

1. 判断两个数组是否相等:Arrays.equals(int[] a, int[] b)

  1. import java.util.Arrays;
  2. public class Test{
  3. public static void main(String[] args) {
  4. int[] array1 = new int[]{18,19,20,21,22};
  5. int[] array2 = new int[]{18,19,20,21,22};
  6. int[] array3 = new int[]{19,18,20,21,22};
  7. System.out.println(Arrays.equals(array1,array2)); //true
  8. System.out.println(Arrays.equals(array1,array3)); //false
  9. }
  10. }

2. 输出数组信息:Arrays.toString(int[] a)

  1. import java.util.Arrays;
  2. public class Test{
  3. public static void main(String[] args) {
  4. int[] array = new int[]{18,19,20,21,22};
  5. System.out.println(Arrays.toString(array)); //[18, 19, 20, 21, 22]
  6. }
  7. }

3. 对数组进行排序:Arrays.sort(int[] a)

  1. import java.util.Arrays;
  2. public class Test{
  3. public static void main(String[] args) {
  4. int[] array = new int[]{97,15,85,64,22,53,46,25,18,32};
  5. Arrays.sort(array);
  6. System.out.println(Arrays.toString(array)); //[15, 18, 22, 25, 32, 46, 53, 64, 85, 97]
  7. }
  8. }

4. 二分查找:Arrays.binarySearch(int[] a, int key)

  1. import java.util.Arrays;
  2. public class Test{
  3. public static void main(String[] args) {
  4. int[] array = new int[]{15, 18, 22, 25, 32, 46, 53, 64, 85, 97};
  5. int index = Arrays.binarySearch(array, 22);
  6. System.out.println(index); //2
  7. }
  8. }

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

闽ICP备14008679号