java知识(数组)

数组 专栏收录该内容
1 篇文章 0 订阅

一、一维数组

1、数组是相同类型数据的有序集合。
数组变量的语法:

int[] array = new int[5];
//不推荐
//int array[] = new int[3];
int [] arr = {1,2,3};

上面的这行语句做了两件事:

使用 new int[5] 创建了一个数组。
把新创建的数组的引用赋值给int变量 array。
2.数据的遍历:

private static void traverse() {
		int [] array =new int[5];
		array[0]=100;
		array[1]=200;
		array[2]=300;
		array[3]=400;
		array[4]=500;
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]+",");
		}

for-each循环或加强型循环,在不使用下标的 情况下比遍历数组

//基础语法
for(type element:element){
	System.out.prinitln(element);
}
//数组定义和上面一样
for (int i : array) {
			System.out.print(i+"\t");
		}
  1. 数组的特点。
    数组长度是确定的,一旦申请空间,长度不能发生变化,用length属性访问
    元素必须是相同的类型
    可以存储基本数据类型二号引用数据类型
    数组变量属于引用类型

  2. 数组的优缺点
    优点:按照索引查询元素速度快
    能储存大量的数据
    按照索引遍历数组方便
    数组定义简单,而且访问很方便
    可以随机访问其中的元素
    缺点:
    根据内容查找元素速度慢
    数组的大小一经确定不能改变,不适合动态储存
    数组智能存储一种类型的数据
    添加 删除元素效率慢

  3. 冒泡排序的算法。
    冒泡排序,是将数组由小到大,或由大到小的一种排序算法。
    原理:比较两个相邻的元素,将值大的元素交换到右边

private static void traverse() {
		int [] array = {5,1,7,3,9};
		//排序前
		System.out.println(Arrays.toString(array));
		for (int i = 0; i < array.length-1; i++) {
			for (int j = 0; j < array.length-1-i; j++) {
				if (array[j]>array[j+1]) {
					//交换arry[j]和array[j+1]
					int tmp=array[j];
					array[j]=array[j+1];
					array[j+1]=tmp;
				}
			}
		}
		//排序后
		System.out.println(Arrays.toString(array));
		}
  1. 数组的三种初始化方式是什么?
    静态初始化,动态初始化,默认初始化

二、二维数组

二维数组其实就是数组的数组。
1、定义方式
第一种方式
定义的同时,直接进行初始化。

public static void main(String[] args) {
    int[][] ns = {
        {1,2,3,5},
        {1,2,3,5},
        {1,2,3,5}
    };
    System.out.println(ns.length);//3
}

第二种方式

先定义声明二维数组,延迟初始化。

public static void main(String[] args) {
    int[][] ns = new int[3][];
    // 依次初始化三个数组
    for (int i = 0; i < ns.length; i++) {
        ns[i] = new int[3];
    }    
    System.out.println(ns.length);//3
}
 //定义并初始化arr 
        int[][] arr=new int[3][4];
        arr[0][1]=1;
        arr[0][2]=2;
        arr[1][2]=3;
        arr[1][1]=4;
        arr[2][3]=8;

2、二维数组的访问
和一维数组相同,可通过数组下标索引进行数组访问。

public static void main(String[] args) {
    int[][] ns = {
            {1,2,3,5},
            {4,5,6,7},
            {8,9,10,11}
    };

    System.out.println(ns[2][3]);//11
}

二维数组的遍历
对二维数组比较常见的一个操作是进行遍历,下面我们通过for循环来对一个二维数组进行遍历。

public static void visitEveryOne() {
        // 定义一个二维数组,高维(行)表示不同的班级,三个班
        // 低维(列)标识每个学生的数学成绩。每个班有5名学生(人数比较少)
        int[][] scores = {
                {98, 97, 100, 80, 81},
                {95, 100, 100, 99, 98},
                {91, 89, 92, 90, 99}
        };

        for (int i = 0; i < scores.length; i++) {
            StringBuilder stringBuilder = new StringBuilder("");
            stringBuilder.append("[");
            for (int j = 0; j < scores[i].length; j++) {
                // 通过下标索引访问数组。
                stringBuilder.append(scores[i][j]);
                if (j != scores[i].length - 1) {
                    stringBuilder.append(",");
                }
            }
            stringBuilder.append("]");

            System.out.println("班级" + (i+1) + "的成绩:" + stringBuilder.toString());
        }
    }

输出:

班级1的成绩:[98,97,100,80,81]

班级2的成绩:[95,100,100,99,98]

班级3的成绩:[91,89,92,90,99]

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页

打赏作者

杨码

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值