java基础知识-数组01

数组

相同类型数据的有序集合,可以通过下标访问每一个数组元素

数组也是对象,数组元素相当于是对象的成员变量

数组的声明和创建

声明

// array type   array name
        int[] nums1; // definition, prefer
        int nums2[];

创建

int[] num = new int[10];
dataType[] arrayRefVar = new dataType[arraySize];
  • 数组元素通过索引访问,索引从0 开始
  • 获取数组的长度:arrays.length
  			int[] nums1; // 1. definition, prefer
        // 2. create an array
        nums1 = new int[10]; //can store 10 int type numbers
        // int[] num = new int[10];
        // 3. assign value to array
        nums1[0] = 1;
        nums1[1] = 2;
        nums1[2] = 3;
        System.out.println(nums1[0]); // output:1
				int sum = 0;
        for (int i = 0; i <nums1.length ; i++) {
            sum += nums1[i];
        }
        System.out.println(sum);

内存分析

java内存

  • 存放new的对象和数组

    可以被所有的线程共享,不会存放别的对象引用

  • 存放基本的变量类型(包含这个基本类型的具体数值)

    引用对象的变量(会存放这个引用在堆里面的具体地址)

  • 方法区

    可以被所有线程共享

    包含了所有的class和static变量


  1. 声明数组

    int[] array;
    

在这里插入图片描述

  1. 创建数组

    array = new int[10]
    new的时候会在堆中取一块内存,开辟和数组大小一样的内存,并从栈中的array指向堆中的内存地址
    在数组被赋值之前,默认值都为0(int类型)
    

在这里插入图片描述

  1. 给数组元素赋值

    nums[0] = 1;
    nums[1] = 2;
    ...
    

在这里插入图片描述

如果在此处获取第十一个元素: nums[10]

则会报出异常:数组下标越界

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

初始化

  1. 静态初始化
  2. 动态初始化
  3. 默认初始化
public class ArrayDemo02 {
    public static void main(String[] args) {
        // 1. static initialization: create + assign value
       int[] a = {1,2,3,5,7,8};
       // reference type
        // there is a package named Man
       //Man[] mans = {new Man(),new Man()};

        // 2. dynamic initialization: conclude default initialization
        int[] b = new int[10];
        b[0] = 10;

    }
}

数组边界

合法区间:[0,length-1]

数组使用

基本用法

  1. 打印数组元素
  2. 求和
  3. 求最大值
public class ArrayDemo03 {
    public static void main(String[] args) {
        int[] arr = {1,2,4,5,6};
        // 1. print all array members
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        // 2. calculate sum of all members
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println(sum);
        // 3. find max value
        int max_value = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max_value < arr[i]){
                max_value = arr[i];
            }
        }
        System.out.println(max_value);
    }
}

进阶

  1. 函数:打印数组元素
  2. 反转数组
public class ArrayDemo04 {
    public static void main(String[] args) {
        int[] arr = {1,4,6,7,3};
//        for (int i : arr) {
//            System.out.println(i);
//        }
        printArray(arr);
        int[] reverse = reverse(arr);
        printArray(reverse);
    }

    // 1. print array members
    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

    // 2. reverse array
    public static int[] reverse(int[] arr){
        int[] result = new int[arr.length];
        for (int i = arr.length - 1; i >= 0 ; i--) {
            result[arr.length - i - 1] = arr[i]; // index	bound
        }
        return result; // array as return value
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值