1. int[] nums2 = new int[10];//创建数组的格式,默认值是0,数组下标从0开始

    java的内存分析:
    堆:存放new的对象和数组
    可以被所有的线程共享,不会存放别的对象引用
    栈:存放基本数据类型(会包含这个具体数据类型的具体数值)
    引用对象的变量(会存放这个引用在堆里面的具体地址)
    方法区:可以被所有的线程共享
    包含了所有的class和static变量

    1. public class Demo02 {
    2. public static void main(String[] args) {
    3. //静态初始化:
    4. int[] a = {1,2,3};
    5. //动态初始化
    6. int[] b = new int[2];
    7. b[0] =1;
    8. b[1] = 2;
    9. //数组的默认初始化
    10. //数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
    11. }
    12. }

    数组一经创建,它的大小就是不可以改变的
    其元素必须是相同类型,不允许出现混合类型
    数组中的元素可以是任何数据类型,包括基本类型和引用类型
    数组变量属于引用类型,数组也可以看作是对象,数组中的每个元素相当于该对象的成员变量,数组本身就是对象,java中的对象是在堆中
    因此数组无论是保存原始类型还是其他对象类型,数组对象本身是在堆中

    1. public class Demo04 {
    2. //数组作为参数传送
    3. public static void printArray(int[] arrays){
    4. for(int a:arrays){
    5. System.out.println(a);
    6. }
    7. }
    8. //数组作为返回值
    9. public static int[] reverse(int[] arrays) {
    10. int[] res = new int[arrays.length];
    11. for(int i = 0, j = res.length- 1; i < arrays.length; i++,j--){
    12. res[j] = arrays[i];
    13. }
    14. return res;
    15. }
    16. public static void main(String[] args) {
    17. int[] arrays = {1,2,3,4};
    18. //打印全部的数组元素
    19. for (int i =0; i< arrays.length; i++) {
    20. System.out.println(arrays[i]);
    21. }
    22. //增强型的for循环
    23. for (int a:arrays){
    24. System.out.println(a);
    25. }
    26. printArray(arrays);
    27. int[] reversearray = reverse(arrays);
    28. printArray(reversearray);
    29. printArray(arrays);
    30. }
    31. }
    1. package array;
    2. import java.util.Arrays;
    3. //稀疏数组
    4. public class Demo07 {
    5. public static void main(String[] args) {
    6. //1。创建一个二维数组
    7. int[][] array1 = new int[11][11];
    8. array1[1][2] = 1;
    9. array1[2][3] = 1;
    10. for(int[] array:array1)
    11. System.out.println(Arrays.toString(array));
    12. //转换为稀疏数组保存
    13. //获取有效值的个数
    14. int sum = 0;
    15. for(int[] array:array1){
    16. for (int num:array){
    17. if(num != 0){
    18. sum++;
    19. }
    20. }
    21. }
    22. System.out.println("有效值的个数:"+sum);
    23. //创建一个稀疏数组的数组
    24. int[][] array2 = new int[sum+1][3];
    25. array2[0][0] = 11;
    26. array2[0][1] = 11;
    27. array2[0][2] = sum;
    28. //遍历二维数组,将非0的值,存放到稀疏数组中
    29. int cnt = 1;
    30. for (int i = 0; i < array1.length;i++){
    31. for (int j = 0; j < array1[i].length; j++) {
    32. if(array1[i][j] != 0){
    33. array2[cnt][0] = i;
    34. array2[cnt][1] = j;
    35. array2[cnt][2] = array1[i][j];
    36. cnt++;
    37. }
    38. }
    39. }
    40. System.out.println("压缩后的稀疏数组是:");
    41. //输出稀疏数组
    42. for (int[] array:array2) {
    43. System.out.println(Arrays.toString(array));
    44. }
    45. //还原稀疏数组
    46. //1.读取稀疏数组
    47. int[][] array3 = new int[array2[0][0]][array2[0][1]];
    48. //还原数组的值
    49. int col = 0;
    50. for(int[] array:array2) {
    51. col++;
    52. if(col == 1) {
    53. continue;
    54. }
    55. array3[array[0]][array[1]] = array[2];
    56. }
    57. System.out.println("还原后的数组:");
    58. //读取还原后的数组
    59. for(int[] array:array3){
    60. System.out.println(Arrays.toString(array));
    61. }
    62. }
    63. }