文章目录

  • 数组
    • 1.数组的定义
    • 2.数组声明创建
    • 3.数组的初始化
      • 1. 静态初始化
      • 2. 动态初始化
      • 3. 数组的默认初始化
    • 4.数组的四个基本特点
    • 5.数组边界
    • 6.数组的使用
      • for循环
      • foreach增强for循环 数组作为方法入参 数组作为返回值
    • 7.多维数组
      • 二维数组
    • 8. Arrays 类
    • 9.冒泡排序
    • 10.稀疏数组
  • 拓展
    • 内存分析

数组

1.数组的定义

  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们

2.数组声明创建

  1. 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法:
dataType [] arrayName;//首选方法
或
dataType arrayName [];//效果相同,但不推荐
  1. Java语言使用new操作符来创建数组,语法如下:
dataType [] arraName = new dataType[arraySize];
  1. 数组的元素是通过索引访问的,数组索引从0开始
  2. 获取数组长度:
arrays.length

3.数组的初始化

1. 静态初始化

    int[] a = {1, 2, 3};Man [] mans={ new Man(1,1),new Man(2,2)};

2. 动态初始化

 int[] a = new int[2];a[0]=1;a[1]=2;

3. 数组的默认初始化

  • 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化.
package arrays数组;public class 数组初始化 {public static void main(String[] args) {//静态初始化:创建+赋值int[] a = {1, 2, 3, 4, 5};System.out.println(a[0]);//动态初始化:包含默认初始化int[] b = new int[10];String[] s = new String[5];b[0] = 10;b[1] = 10;System.out.println(b[0]);System.out.println(b[1]);System.out.println(b[2]);System.out.println(b[3]);System.out.println(s[1]);System.out.println(s[4]);}
}
/*
1
10
10
0
0
null
null*/

4.数组的四个基本特点

  1. 其长度是确定的.数组一旦被创建,它的大小就是不可以改变的.
  2. 其元素必须是相同类型,不允许出现混合类型.
  3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型.
  4. 数组变量属引用类型,数组可以看成是对象,数组中的每个元素相当于该对象的成员变量.
  5. 数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的.

5.数组边界

6.数组的使用

for循环

package arrays数组;public class ArrayDemo {public static void main(String[] args) {int[] arrays = {1, 2, 3, 4, 5};//打印全部的数组元素for (int i = 0; i < arrays.length; i++) {System.out.println(arrays[i]);}System.out.println("-----------------");//计算所有元素的和int sum = 0;for (int i = 0; i < arrays.length; i++) {sum += arrays[i];}System.out.println("sum=" + sum);System.out.println("---------------------");//查找最大元素int max = arrays[0];for (int i = 0; i < arrays.length; i++) {if (arrays[i] > arrays[0]) {max = arrays[i];}}System.out.println("max=" + max);}
}
/*
1
2
3
4
5
-----------------
sum=15
---------------------
max=5*/

foreach增强for循环 数组作为方法入参 数组作为返回值

package arrays数组;public class ForEach {public static void main(String[] args) {int[] arrays = {1, 2, 3, 4, 5};//        //JDK1.5 没有下标
//        for (int array : arrays) {//            System.out.println(array);
//        }//        printArray(arrays);int[] reverse = reverse(arrays);printArray(reverse);}//打印数组元素public static void printArray(int[] arrays) {for (int i = 0; i < arrays.length; i++) {System.out.println(arrays[i] + " ");}}//反转数组 reverse 反转,颠倒public static int[] reverse(int[] arrays) {int[] result = new int[arrays.length];//反转的操作for (int i = 0, j = result.length - 1; i < arrays.length; i++, j--) {result[j] = arrays[i];}return result;}
}

7.多维数组

二维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组.
  • 二维数组
int a [][] = new int[2][5];
  • 解析:以上二维数组 a 可以看成一个两行五列的数组
  • 思考:多维数组的使用?
package arrays数组;public class 二维数组 {public static void main(String[] args) {//[4] [2] 四行两列/*1,2     array[0]2,3     array[1]3,4     array[2]4,5     array[3]*/int[][] array = {{1, 2}, {2, 3}, {3, 4}, {4, 5}};for (int i = 0; i < array.length; i++) {for (int j = 0; j < array[i].length; j++) {System.out.println(array[i][j]);}}System.out.println("--------------------");System.out.println(array[0][0]);System.out.println(array[0][1]);System.out.println(array[2][0]);System.out.println(array[2][1]);System.out.println("---------------");printArray(array[0]);printArray(array[1]);System.out.println("---------------");System.out.println(array.length);System.out.println(array[0].length);}//打印数组元素public static void printArray(int[] arrays) {for (int i = 0; i < arrays.length; i++) {System.out.println(arrays[i] + " ");}}
}
/*
1
2
2
3
3
4
4
5
--------------------
1
2
3
4
---------------
1
2
2
3
---------------
4
2*/

8. Arrays 类

  • 数组的工具类 java.util.Arrays
  • 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作.
  • 查看JDK帮助文档
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用(注意:是"不用" 而不是"不能")
  • 具有以下常用功能:
    1. 给数组赋值:通过fill方法
    2. 对数组排序:通过sort方法,默认升序
    3. 比较数组:通过equals方法比较数组中元素值是否相等.
    4. 查找数组元素:通过binarySearch 方法能对排序好的数组进行二分查找法操作.
package arrays数组;import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {int[] a = {14, 345, 456, 34, 234};System.out.println(a);//打印数组元素Arrays.toStringSystem.out.println(Arrays.toString(a));//[I@1b6d3586printArray(a);System.out.println();Arrays.sort(a);System.out.println(Arrays.toString(a));}public static void printArray(int[] a) {for (int i = 0; i < a.length; i++) {if (i == 0) {System.out.print("[");}if (i == a.length - 1) {System.out.print(a[i] + "]");} else {System.out.print(a[i] + ", ");}}}
}

9.冒泡排序

  • 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!
  • 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较.
  • 思考: 如何优化?
package arrays数组;import java.util.Arrays;//冒泡排序
/*
1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,就交换位置
2.每一次比较,都会产生一个最大,或者最小的数字
3.下一轮则可以少一次排序
4.依次循环,直到结束*/
public class 冒泡 {public static void main(String[] args) {int[] a = {1, 34, 23, 2, 3, 3, 3, 23, 45, 6, 3};int[] sort = sort(a);System.out.println(Arrays.toString(sort));}public static int[] sort(int[] array) {//临时变量 temp临时雇员int temp = 0;//外层循环,判断我们这个要走多少次for (int i = 0; i < array.length - 1; i++) {//优化  标示flagboolean flag = false;//通过flag标识位减少没有意义的比较//内层循环,比较判断两个数,如果第一个数比第二个数大,则交换位置for (int j = 0; j < array.length - 1 - i; j++) {if (array[j + 1] < array[j]) {temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;flag = true;}}if (flag == false) {break;}}return array;}
}

10.稀疏数组


稀疏数组

拓展

内存分析


18 - java基初 数组介绍 冒泡排序相关推荐

  1. Java里的数组介绍

    注意, 本文讲的是数组(Array),  非数组型线性表容器(ArrayList). 一. C语言的静态数组和动态数组. 稍微接触过c的程序猿都应该知道, c语言里的数组分为静态数组和动态数组. 1. ...

  2. Java数组初始化, 冒泡排序, 查找

    文章目录 数组快速入门 数组的使用 使用方式1 动态初始化 使用方式2 动态初始化 使用方式3 静态初始化 数组使用注意事项和细节 数组赋值机制 数组翻转 数组扩容 排序的介绍 冒泡排序法 数组的查找 ...

  3. java二位数组biaoda_java基础 day14 数组 二维数组 冒泡排序 例题(正则表达式)

    数组: 数组静态初始化及遍历 package wwl.array; import java.util.Arrays; /** * 数组的静态初始化及数组遍历 * */ public class Tes ...

  4. java:数组的冒泡排序

    eclipse使用Java实现数组的冒泡排序 文章目录 前言 方案 代码实现 前言 声明一个数组,包含10个元素,给每个元素赋值0~99的随机整数,使用冒泡算法对数组进行升序排序,并输出排序后的值 方 ...

  5. Java数组介绍(一维数组和二维数组)

    Java数组介绍(一维数组和二维数组) 1. 概述 · 数组是存储多个变量的容器. · 存储的多个变量必须是同一种数据类型. · 数组既可以存储基本数据类型,也可以存储引用数据类型. 2. 数组定义的 ...

  6. javascript中数组、冒泡排序、函数及函数实参形参、arguments伪数组、异步函数等介绍

    数组: 指一组有顺序的数据,其作用就是用来一次性存储多个数据.(数组元素:数组中的每一个数据:数组长度:数据中元素的个数:数组索引:用来存储或访问数组中的数据,也叫下标,索引从0开始,即第一个数组元素 ...

  7. Java的Arrays类常用方法#冒泡排序#二分查找法#数组转换集合

    数组高级冒泡排序 方法一:(冒泡排序) /** 冒泡排序* 1,返回值类型,void* 2,参数列表,int[] arr* * 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[ ...

  8. java的mwcellarray_Java 数组

    备注:如有错误请联系. 1.Java数组的定义 Java 语言中提供的数组是用来存储固定大小的同类型元素. 2.Java数组的声明 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法 ...

  9. Java基础之数组与集合

    Java基础之数组与集合 一.数组 二.冒泡排序算法 三.选择排序算法 四.二维数组 五.Arrays 工具 六.宠物管理系统 七.集合 Collection 八.List 九.重写 equals 方 ...

最新文章

  1. 在吗?认识一下JWT(JSON Web Token) ?
  2. ae灯光插件_AE教程|Particular粒子插件全面讲解介绍官方视频教程 「中文字幕」...
  3. Oracle 获取本周、本月、本季、本年的第一天和最后一天
  4. 【Hook】postman工具的代码生成工具让它锦上添花
  5. 【渝粤教育】21秋期末考试财务管理10164k2
  6. 每日一题20180330-Linux
  7. idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库
  8. 【2017年第4期】数据管理能力成熟度模型
  9. 前端实现3d效果_前端动画效果实现的简单比较
  10. CentOS7下使用yum快速安装配置oracle数据库
  11. redis异常处理篇(持续更新中...)
  12. matlab如何换背景图片_紫外特征吸光度/光谱斜率/一阶导数紫外光谱(S275295/S350400/SR)+matlab...
  13. 《学习笔记13》——web前端助手:插件fehelper的使用
  14. Android基础入门教程——4.4.2 ContentProvider再探——Ducument Provider
  15. The POM for is missing, no dependency information available
  16. 武汉男人一个月要赚多少钱,老婆才不用上班?心碎成渣……
  17. html5 舰c 手机,我国最新款导弹驱逐舰052D,主力战舰的不二之选,中国厉害了!...
  18. 使用 Pytorch 训练 AlexNet 识别5种花朵
  19. 计算机图文报告病理是什么,病理图文报告系统、病理图文工作站、病理报告软件...
  20. ACAC java中final关键字

热门文章

  1. 给一个向量进行归一化
  2. 【双写迁移方案】实现动态切换实现分库分表
  3. 《数据结构》实验报告(一)——顺序表存储结构及实现
  4. Design Compiler知识点汇总
  5. WCF服务通过TCP实时监控客户端状态,并可以向客户端广播推送消息,实现双向通信
  6. 华为 eNSP 模拟器练习1
  7. VS2010 MSDN安装
  8. 低速接口之SPI接口,分类,四种模式,特点
  9. 在计算机视觉论文中benchmark和baseline的区别
  10. 基于Android平台的图书管理系统的制作(1)