文章目录

  • 数组概述
  • 为什么需要数组?
  • 什么是数组?
  • 数组的定义
  • 数组的定义格式一:
  • 数组的定义格式二
  • 数组的定义格式三:
  • 数组的访问
  • 通过数组的索引访问数组的元素
  • 例1:创建并遍历倒序输出数组
  • 数组初始化
  • 例2:
  • 输出数组
  • 例三
  • 数组异常
  • 数组索引越界
  • 空指针异常
  • 例3:写一个方法,对某数组进行排序。
  • Arrays工具类
  • 数组排序,并转成字符串



java 根据布尔值判断排序_数据类型

数组概述

为什么需要数组?

为了存储多个数剧

什么是数组?

数组是用来存储同一种数据类型多个元素的容器。 数据类型:可以是基本类型,也可以是引用类型 容器:比如教室、衣柜、纸箱等,可以存放多个事物.

数组的定义

数组的定义格式一:

数据类型[ ] 数组名 = new 数据类型[长度]

定义格式详解:
♠ 数据类型:即数组中存储元素的数据类型,可以是基本数据类型,也可以是引用数据类型
♠ [ ] :表示数组
♠ 数组名:数组的变量名,遵循标识符命名规范
♠ new:创建数组的关键字,通过new开辟内存空间
♠ 长度:即数组长度,数组最多能够存放元素的个数,若数组长度在定义时指定,不能更改。

数组的定义格式二

数据类型[ ] 数组名 = new 数据类型[]{元素1,元素2,元素3...}

优点:定义时元素是确定的,避免内存空间的浪费

数组的定义格式三:

数据类型[ ] 数组名 = {元素1, 元素2, 元素3…};

格式三是格式二的变形,简化了代码。

数组的访问

通过数组的索引访问数组的元素

索引:也叫下标、脚标,是数组元素距离数组起始位置的偏移量
第一个元素的偏移量为0,所以数组的索引从0开始

格式:数组名[索引 ]
取值:数组名[索引 ]
赋值:数组名[索引 ] = 值;

例1:创建并遍历倒序输出数组

创建一个长度为5的数组,遍历改数组并输出里面的内容。

注:arr.length为arr这个数组的长度

public class Arr {
    public static void main (String[] args){
        int[] arr = new int[7];
        for(int i = 0;i < 5;i++){
            arr[i] = i;
        }
//            System.out.println(arr.length);
        for(int j = arr.length;j > 0;j--){
            System.out.println(arr[j-1]);
        }
    }
}

结论:
1:数组的最大索引为数组长度-1
2:数组中未手动赋值的元素,有默认值0
3:直接输出数组变量名,得到的是数组的内存地址值

数组初始化

在内存中为数组开辟连续空间并为每个元素赋值的过程

  • 内存:计算机的重要组件,用于程序运行中临时存储数据。
  • 连续空间:数组元素在内存空间中的存放位置是连续的。

动态初始化:
只指定长度,由系统给出默认值 整数型: 0
浮点型: 0.0
字符型: '\u0000' (空字符)
布尔型: false
引用类 型:null
对应第一种定义数组的方式:


数据类型[ ] 数组名 = new 数据类型[长度]

静态初始化: 给出初始化值,由系统决定数组长度
对应第二、三种定义数组的方式:


数据类型[ ] 数组名 = new 数据类型[]{元素1,元素2,元素3...}


数据类型[ ] 数组名 = {元素1, 元素2, 元素3…};

例2:

这里arr1先开辟了一份空间,arr2 = arr1说明arr2直接使用了arr1的内存空间,即他俩同享一个内存,下面改变arr2的值,arr1的值肯定也就随着一起变。

public class demo {
    public static void main(String[] args) {
        //需求: 一个数组两个引用的内存图解
        //定义arr1数组
        int[] arr1 = new int[3];
        arr1[0] = 1;
        arr1[1] = 2;
        arr1[2] = 3;
        System.out.println(arr1[0]);
        System.out.println(arr1[1]);
        System.out.println(arr1[2]);
        System.out.println("-----------------");
        //定义arr2数组
        int[] arr2 = arr1;  //意思是说: 数组arr2和数组arr1共享同一份堆内存空间(大白话解释: 操作的是同一个数组)
        arr2[2] = 33;
        System.out.println(arr2[0]);
        System.out.println(arr2[1]);

        System.out.println(arr1[2]);
        System.out.println(arr2[2]);
    }
}

java 根据布尔值判断排序_java 根据布尔值判断排序_02

输出数组

两种方法,一种是用下标,第二种是for each循环

例三

public class Test2 {
	public static void main(String[] args) {
		int[]  a = {1,5,7,3,6,0};
		// 直接通过下标访问
		for (int j =0;j<a.length;j++)
			System.out.print(a[j]);
		System.out.println("-----------------");
		// for each循环访问
		for (int i : a)
		System.out.print(i);
	}
}

数组异常

数组索引越界

如果arr数组只有三个数,你如果想打印arr[3]他肯定就越界异常了,因为只有arr[0]、arr[1]、arr[2]这三个空间存的三个数。

public class demo {
    public static void main(String[] args) {
        int[] arr1 = new int[3];
        arr1[0] = 1;
        arr1[1] = 2;
        arr1[2] = 3;
        System.out.println(arr1[3]);
    }
}

java 根据布尔值判断排序_数组_03

空指针异常

这个数为空时,会报错,空指针异常。

java 根据布尔值判断排序_java 根据布尔值判断排序_04

例3:写一个方法,对某数组进行排序。

public class bulu {
    public static void main(String[] args) {
        double[] arr = {2, 5,0, 7, 8, 3,11};
        double[] arr1 =  bulubulu(arr);
        
        for (int i = 0;i< arr1.length;i++)
            System.out.println(arr1[i]);
    }
    
    public static double[] bulubulu(double[] arr){
        int n = arr.length;
        for (int i = 0;i < n;i++){
            for (int j = 0;j < n-1-i;j++){
            if(arr[j] > arr[j+1]) {
              double temp = arr[j];
              arr[j] = arr[j+1];
              arr[j+1] = temp;
            }
            }
        }
        return arr;
        }
}

这里使用了冒泡排序,bulubulu方法最后返回的是一个array数组。

不懂冒泡的朋友可以看看这个文章。

乾坤大挪移——冒泡法排序,良心之作,拒绝入坑

Arrays工具类

数组排序,并转成字符串

import java.util.Arrays;
public class Test2 {
	public static void main(String[] args) {
		int[]  a = {1,5,7,3,6,0};
		// 排序
		Arrays.sort(a);
		// 转换为字符串
		System.out.println(Arrays.toString(a));
	}
}

[0, 1, 3, 5, 6, 7]

当然,这个工具库有很多功能,具体使用时可以百度。

根据B站Java入门/黑马Java零基础Java在线教程最新Java编程而写,并有所改编,如有侵犯请联系。

一直在做比赛(用的python),java就没怎么学,但专业课是java,python不考啊啊啊啊啊

罢了,会一门语言再学其他的就简单多了,方法之前的比较简单,就不写了,为了不挂科,后面的内容肯定会慢慢补充的。

当然还有老师布置的一些题目(在我看来比较难!!!)与大家一起分享,共同进步。

欢迎大家关注点赞!!!

java 根据布尔值判断排序_java 根据布尔值判断排序_05