美文网首页
Java 数组详解

Java 数组详解

作者: larQ | 来源:发表于2017-06-29 16:06 被阅读0次

1. 数组的概念

  • 数组就是可以存放一组相同 数据类型 数据** 的数据结构
  • 数组是一种引用类型

2. 数组的声明/定义

  • 就是在栈区分配一个数组的引用,不能指定数组的长度
//下面两种声明/定义都可行,在Java中提倡第一种,
// 第二种可能在C/C++中使用的比较多
int[] arr1 ;
int arr2[] ;

3. 数组的创建

  • 就是在堆区中分配存储数据的内存空间,必须指定数组的长度
  • 并且长度指定后 不能改变(数组长度一旦指定 不能改变)
int[] arr = new int[5];
等号左边:
int :数据类型
[] :代表数组,有几个[] 代表几个数组
arr : 数组名称,合法的标识符
等号右边:
new : 在内存中开辟空间,创建新的实体或者对象
int : 数据类型 (这里相当于构造器吧)
[]: 代表数组
5:数组的长度
//上面的代码做了两件事
//①使用 new int[5] 创建了一个数组
//②把新创建的数组的引用赋值给变量 arr
图解说明.png

4.

  • 数组中存放的每一个数据,都称之为数组中的一个元素
  • 数组中存放元素的总个数,称为数组的长度
  • 可通过数组的length属性获取数组长度 int len = arr.length
  • 未区分数组的元素,给数组中的每个元素取了个“编号”---数组的索引
  • 可通过数组名和索引值 来找到数组中的每个元素(索引从0 开始)

5 . 数组的初始化

  • 就是给数组中的元素赋初始值
  • 如果数组创建完成后没有初始化,则每个元素都会有默认值
数组元素的数据类型 数组元素的默认值
整数(byte,short,int,long) 0
浮点型(float,double) 0.0
布尔(boolean) false
字符(char) '\u0000'
引用类型(String,Student,…) null
  • 说明:
    char在内存中占的两个字节,是16个二进制。
    u0000,每个0其实代表的是16进制中的0,那么4个0就是代表16个二进制位。
  • 数组的初始化有2种方式:静态初始化和动态初始化
//静态初始化:在数组创建的同时直接指定数组中的元素值,这种方式,其实数组长度就确定了
int[] iArr = {1,2,3,5};
String[] strArr = {"abc","bcd","ccc"};
int[] arr = new int[]{2,33,44,555};
//动态初始化:先完成数组的声明和数组的创建,再通过数组的索引取到数组中的每个元素来赋值
int[] arr = new int[4];
for(int i=0 ; i<arr.length; i++) {
    arr[i] = i+1;
}
  • 内存分配


    内存分配.png

6. 数组的遍历

//正序(顺序):从索引为0的元素开始,依次取出,直到索引为arr.length-1
for(int i=0;i<arr.length;i++) {
    int m = arr[i];
    System.out.println(m);
}
//倒序 
for(int i = arr.length-1;i>=0;i--) {
    int m = arr[i];
    System.out.println(m);
}
//foreach遍历
for(Int m:arr) {
    System.out,println(m);
}

7. 对象数组,以学生对象为栗

//学生对象,省略getter,setter
public class Student{
    private String num;
    private String name;
    private String sex;
    private int age;
}
//学生对象数组
Sutdent[] stus = new Sutdent[3];
stus[0] = new Student("10010","Jun","男",22);
Student s = stus[0];
System.out.println(stus[0].getName);

//对象数组的遍历
Student[] stus = {new Student("10011","Zar","男",18),new Student("10012"),"June","女",19}

for(int i = 0;i<stus.length;i++) {
    Student s = stus[i];
    System.out.println(s.getNum+"---"+s.getName+"---"+s.getSex()+"---"+s.getAge());
}

for(Student s : stus) {
      System.out.println(s.getNum+"---"+s.getName+"---"+s.getSex()+"---"+s.getAge());
}
  • 内存分配:


    内存分配.png

8. 二维数组:数组的数组,数组中的每个元素都是一个数组

  • 二维数组的声明
// 声明/定义
int[][] arr1;
String[][] arr2;
Student[][] arr3;
  • 二维数组创建 :必须指定大数组的长度
int[][] arr = new int[5][];//没有指定小数组的长度,大数组中没有创建小数组
arr[0] = new int[3];  arr[1] = new int[4];//分别指定
  • 内存分配


    没有指定小数组的长度.png
int[][] a = new int[2][4];指定了大数组中小数组的长度,会同时完成小数组的创建
  • 内存分配


    长度都指定.png
  • 二维数组的初始化

//静态初始化
int[][] arr={{3,5,7},{2,9},{5,7,3,6}};
String[][] arr = {{“aaa”,”bbb”,”ccc”},{“haha”,”hehe”},{“jdb”,”wlj”,”hqz”}};
int[][] arr = new int[3][4];
for(int i = 0;i<arr.length;i++) {
    for(int j = 0;j<arr[i].length;j++) {
        a[j] = (int)(Math.random()*10)+1;
    }
}
  • 二维数组的遍历
for(int i = 0;i<arr.length;i++) {
    for(int j = 0;j<arr[i].length;j++) {
        System.out.println(a[j]);
    }
}
for(int[] a : arr) {
    for(int n:a) {
        System.out.println(n);
    }
    System.out.println();
}

相关文章

  • Java数组类型

    数组类型和数组引用变量详解 数组类型为什么要用数组?Java数组的两大特征:定义数组时,不能指定数组的长度变量分为...

  • Java编程(10)

    Java编程基础知识-Java二维数组详解:二维数组的声明和初始化,以及获取二维数组的值 为了方便组织各种信息,计...

  • Java数组详解

    数组是相同类型的变量按顺序组成的一种复合数据类型,称这些相同类型的变量为数组的元素或单元。数组通过数组名加索引来使...

  • Java 数组详解

    1. 数组的概念 数组就是可以存放一组相同 数据类型 数据** 的数据结构 数组是一种引用类型 2. 数组的声明/...

  • java数组详解

    产生随机数并逆序输出 数组排序 : 选择排序、冒泡排序 选择法排序的思路:1.把第一位和其他所有的进行比较,只要...

  • 2018-12-02

    Java二维数组的遍历及其转置详解 1.首先我们需要定义一个二维数组 2.对数组进行遍历 3.对数组进行转置操作 ...

  • FreeMarker | 笔记篇

    java中Freemarker list指令详解 java中Freemarker if else指令详解 java...

  • Java 反射机制

    [1]. java反射详解[2]. Java Reflection(反射机制)详解[3]. 深入理解Java类型...

  • Java注解

    Java注解(Annotation)详解(一)——概述及JDK自带注解 Java注解(Annotation)详解(...

  • 2018-11-23

    Day02.流程控制,逻辑循环控制,数组加强详解,IDEA配置安装。 1.流程控制语句 2.java程序 逻辑控制...

网友评论

      本文标题:Java 数组详解

      本文链接:https://www.haomeiwen.com/subject/xnhmcxtx.html