首页 > 编程语言 > 详细

零基础自学JAVASE Part6

时间:2021-05-24 15:07:17      阅读:17      评论:0      收藏:0      [点我收藏+]

数组

技术分享图片

 

 

 

1. 数组的概述

概念:
  用来存储一组相同数据类型的集合(或者叫容器)
注意事项:
  1. 数组中的元素类型必须一致
  2. 数组本身是引用数据类型,但是里面的元素既可以是基本数据类型,也可以是引用数据类型
  3. 数组的长度一旦给定无法改变
 
2. 数组的初始化
2.1 动态初始化
概念:
  给定数组的长度,由系统分配空间和初始值
格式:
  数据类型[] 数组名 = new 数据类型[数组的长度];
数组的赋值和取值:
  索引: 索引是从 0 开始的,索引的最大值是数组的长度减 1
  赋值: 数组名[索引值] = 要赋的值
  取值: 数组名[索引值];
public class Init {

    public static void main(String[] args) {
        int[] array = new int[4]; // 动态初始化
        //数据类型[] 数组名 = new 数据类型[数组的长度];
        array[0] = 10; // 赋值
        array[1] = 20; // 赋值
        array[2] = 30; // 赋值
        array[3] = 40; // 赋值
        for (int i = 0; i <= 3; i++) {
            System.out.println(array[i]);
        }
    }
    
}

 

2.2 动态初始化

概念
  给定数组中的元素,由系统分配长度并赋值.
格式:
  数据类型[ ] 数组名 = new 数据类型[]{元素 1,元素 2….};
简写格式:
  数据类型[ ] 数组名 = {元素 1,元素 2….};
注意事项:
  只有第一次定义的时候可以简写,重写赋值的时候不能简写
  不能在定义数组的时候,又给定长度,有给定值
  数组长度的获取: 数组名.length 
public class InitPractice {

//    public static void main(String[] args) {
//        char [] arr_char = new char[] {‘默‘,‘努‘,‘力‘,‘的‘,‘C‘};
//        int a = arr_char.length;
//        for (int i =0; i<a; i++) {
//            System.out.println(arr_char[i]);
//        }
//    }
    public static void main(String[] args) {
    
        boolean [] arr_bool = new boolean [] {false, false, true, true};
        System.out.println(arr_bool[0]);
    }
}

 

3. 数组的内存分析

栈(stack):局部变量和方法的执行,没有初始值

堆(heap): new出来的东西,有初始值--->基本数据类型:对应默认值

                  引用数据类型:null

 

4. 数组常见异常

空指针异常:
  产生的原因: 使用 null 调用堆中的内容,要注意的是,如果一个变量的初始值是 null, 直接打印是不报错的,只有调用他里面的东西才会报空指针
例子:
  int [] arr = null;//有初始值,初始值为 null
  System.out.println(arr); //null
  System.out.println(arr[0]);// java.lang.NullPointerException
数组角标越界异常:
  产生的原因:数组的索引值超出的最大的范围,就会出现该异常
例子:
  int[] arr = new int[3];// 索引值 0-2
  System.out.println(arr[4]); // java.lang.ArrayIndexOutOfBoundsException

 

5. 数组应用

5.1 数组遍历

例子:定义一个数组{1,2,3,4,5}; 按如下格式打印数据:

      [1,2,3,4,5]
 
    public static void printArr(int[] arr) {

        for (int i = 0; i < arr.length; i++) {

            if (arr.length == 1) {
                System.out.println("[" + arr[i] + "]");
            } else if (i == 0) {
                System.out.println("[" + arr[i] + ",");
            } else if (i == arr.length - 1) {
                System.out.println(arr[i] + "]");
            } else {
                System.out.println(arr[i] + ",");
            }
        }
    }

可以单独封装成方法,public static 在同一个包下可以在不同的class文件中引用

引用方法格式:文件名.方法名(传入的参数)

和python封装类似

 

5.2 最值

求出一个数组中个最大值和最小值

思路:
  1. 设置一个变量用来代表最值(数组中的第一个元素)
  2. 用这个变量和数组中的每一个元素作比较
  3. 如果数组中有元素比他大,就把他的值重新赋值
  4. 比较结束后,打印最值
    public static void printMaxandMin(int[] arr) {
        int max = arr[0];
        int min = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        System.out.println("最大值为:" + max);
        System.out.println("最小值为:" + min);

    }

 

5.3 元素交换

将数组中两个元素做交换

思路:
  1. 引入一个中间量
  2. 中间量赋值为arr[i]
  3. arr[i] = arr[j]
  4. 然后 arr[j] = 中间量
/*
  这是逆序,相当于头尾两两元素对应交换

*/
public static void reverse(int[] arr) { for (int i =0; i<arr.length/2; i++) { int temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } for (int j = 0; j<arr.length;j++) { System.out.print(arr[j]); } }

 

6. 多维数组
结构:
数据类型 [] [] 数组名 = new 数据类型[m][n];
  m: 二维数组中一维数组的个数
  n: 一维数组中元素的个数
注:二维数组是特殊的一维数组,即一维数组中的每一个元素都是一维数组
 
 

零基础自学JAVASE Part6

原文:https://www.cnblogs.com/gzqcason/p/14803140.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!