Java数组

Java数组,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 一维数组
    • 1.数组的基本概念及作用
    • 2.数组的创建
      • 数组声明的两种方式
      • 数组创建的三种方式
      • 数组的长度
      • 注意事项
        • 数组的输出方法
        • 各个数据类型的默认值
    • 3.数组的访问以及迭代
      • 数组元素的访问
      • 数组的迭代
        • 1.for循环
        • 2.增强for循环
    • 4.数组元素的两种排序方法
      • 1.冒泡排序
      • 2.选择排序
  • 二维数组
    • 1.定义
    • 2.声明
    • 3.创建
    • 4.迭代

一维数组 1.数组的基本概念及作用

数组是相同类型元素的集合

数组本身是引用数据类型,即对象.但是数组可以存储基本数据类型,也可以存储引用数据类型,数组中存放的数据类型,取决于声明数组时可以存储的数据类型.如:int []a;a数组就只能存储整型数据

2.数组的创建 数组声明的两种方式

1.数据类型 [] 数组名字;如: int [] a,b;

注:使用这种声明方式,a,b都是数组.

2.数据类型 数组名字 [];如: int a,b [];

注:这种声明方式,a是整型变量,b是数组

为了避免混淆,我们一般采用第一种声明方式

数组创建的三种方式

1.声明数组的同时,根据指定的长度分配内存,但数组中元素值都为默认的初始化值

如:int [] a = new int [10];//动态创建数组,没有给元素赋值,可以结合for循环给元素赋值,

import java.util.Arrays;

public class Class {
    public static void main (String[]args) {
            int  a [] = new int[10];
        for (int i = 0; i < 5; i++) {
            a[i] = i;
        }
        System.out.println(Arrays.toString(a));
    }
}

2.声明数组并且分配内存,同时使其初始化

如:int [] a = new int [] = {1,2,3,4,5};//静态创建数组,在创建的时候给每个元素赋值

3.与前一种方式相同,仅仅是语法相对简略

如:int a = {1,2,3,4,5};

数组的长度

int a = {1,2,3,4,5};

System.out.println(a.length);//输出a的长度

注意事项 数组的输出方法

假如我们使用这种方式来输出数组

public class Class {
    public static void main(String[] args) {
        int a1[] = new int[5];
        System.out.println(a1);
    }
}

得到的结果是

很明显并不是我们想要的,其实直接输出的话,得到的一个地址,这个地址用十六进制表示

要达到我们想要的输出结果,也就是一串内容,应该这样去输出

import java.util.Arrays;

public class Class {
    public static void main(String[] args) {
        int a1[] = new int[5];
        System.out.println(Arrays.toString(a1));
    }
}

得到的结果是

这个结果才是我们想要的,这其中用到的是系统已经定义好的Array方法,我们直接拿来用即可.

各个数据类型的默认值
import java.util.Arrays;

public class Class {
    public static void main (String[]args) {
        int  a1 [] = new int[5];
        char a2 [] = new char[5];
        float  a3 [] = new float[5];
        double  a4 [] = new double[5];
        boolean  a5 [] = new boolean [5];
        String  a6 [] = new String[5];
        System.out.println(Arrays.toString(a1));
        System.out.println(Arrays.toString(a2));
        System.out.println(Arrays.toString(a3));
        System.out.println(Arrays.toString(a4));
        System.out.println(Arrays.toString(a5));
        System.out.println(Arrays.toString(a6));
    }
}

由此可见:

int 默认0 char 默认空格 float/double默认0.0

String 默认null boolean默认false

3.数组的访问以及迭代 数组元素的访问

首先我们看看数组在内存中的存储

上文说到,直接使用System.out.println(a);输出数组得到的是一个地址,这个地址其实就是a[0]也就是数组的首地址

数组的存储空间在内存中是连续的,而且空间数量一旦确定就不能更更改.数组的长度也是有限的,理论上是int类型的最大值,但实际上我们用不了那么大,而且如果内存中没有那么大的连续空间,也无法创建这个数组.

那我们数组元素访问方法:数组名[索引];如a[2];

数组的索引是从0开始的,而且索引的数据类型是整型.索引的最大长度和数组长度始终相差1(因为索引从0开始)

数组的迭代 1.for循环
int []a = {1,2,3,4};
for(int i = 0;i
2.增强for循环
int [] a = {1,2,3,4};
for(int t:a){
    System.out.printlf(t);
}

a:需要遍历的数组

t:声明一个变量,类型取决于a,每循环一次,从数组中取出一个元素,赋给t,进入循环体,重复 *** 作,直到数组中的元素遍历完成

使用这种方法虽然简单,但是输出的是整个数组,不能指定输出某个特定的元素

4.数组元素的两种排序方法 1.冒泡排序

冒泡排序其实就是每次取出相邻的两个元素进行比较,把不符合要求的元素"沉底"

简单说一下,比如三个数3,2,1,从小到大排序.

首先第一个数和第二个数也就是3,2进行比较,3大,所以两个交换,之后第二个数是3,第二个数再与第三个数比较,也就是3和1.再交换.得到新的次序是2,1,3

这个时候第一遍比较最大的已经沉底,继续比较剩余的,也就是第一个数与第二数比较,得到最终序列1,2,3

上面简单的过程我们可以发现三个数要比较两趟,第一趟比较两次,第二趟比较一次.那么如果是四个数呢?

程序参下:

import java.util.Arrays;

public class Class {
    public static void main(String[] args) {
        int[] a = {5, 6, 9, 4, 8, 7};
        for (int i = 0; i < a.length - 1; i++) {//i循环控制趟数
            for (int j = 0; j < a.length - 1 - i; j++) {//j循环控制比较次数
                if (a[j] > a[j + 1]) {
                    int t = a[j + 1];
                    a[j + 1] = a[j];
                    a[j] = t;//不符合的"沉底"
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

程序结果如下

2.选择排序

这种排序方法就相对容易理解得多.假设第一个元素最大,与之后的每一个元素进行比较.满足条件就交换位置.

依然是3,2,1.假设第一个数最小,与第二个数比较.交换位置.第二个数(3)与第三数(1)比较,交换位置.得到2,1,3

假设2最小.与第二个数比较,交换位置.得到最终序列1,2,3

程序如下:

import java.util.Arrays;

public class Class {
    public static void main(String[] args) {
        int[] a = {5, 6, 9, 4, 8, 7};
        for (int i = 0; i < a.length - 1; i++) {//i确定第一个数是哪个数
            for (int j = i+1; j < a.length; j++) {//j控制比较次数
                if (a[i] > a[j]) {
                    int t = a[j];
                    a[j] = a[i];
                    a[i] = t;//符合要求交换
                }
            }
        }
        System.out.println(Arrays.toString(a));
    }
}

结果同上

二维数组 1.定义

二维数组的每一个元素都是一维数组.二维数组也就是数组的数组

2.声明

两种方式

1.int [] [] a,b;

2.int a,b[] [];//a不是数组

与一维数组类似,我们建议使用第一种方法

3.创建

依旧与一维数组类似,有三种方法

1.int [] [] a = new int [3] [5];

2.int [] [] a = new int [3] [];//只创建二维数组,里面一位数组 为 null

3.int [] [] a = {{1,2,3},{1,2,3},{1,2,3}};

4.迭代
import java.util.Arrays;

public class Class {
    public static void main(String[] args) {
        int [] [] a = {{1,2,3},{1,2,3},{1,2,3}};
        for(int i = 0;i<a.length;i++){
            System.out.println(Arrays.toString(a[i]));
        }
    }
}

public class Class {
    public static void main(String[] args) {
        int [] [] a = {{1,2,3},{1,2,3},{1,2,3}};
        for(int i = 0;i<a.length;i++){
            for (int j = 0; j < a[i].length; j++) {
                System.out.print(a[i][j]);
            }
            System.out.println();
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/868356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)