数组的定义

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

数组的声明和创建

基本介绍

  • 首先必须声明数组变量,才能在程序中使用数组,声明数组变量的方法:
    1. //数组类型 数组名
    2. int[] nums;//(Java首选的方法)
    3. int nums[];//(不是首选方法,在C和C++用的形式)
  • Java语言使用new操作符来创建数组,语法如下:
    1. //数组类型 数组名=new 数组类型【数组大小Size】
    2. int[] nums=new int[10];
  • 数组是通过索引访问的,数组索引从0开始(数组下标从0开始)
  • 获取数组长度:array.length

运用实例

  1. public class ChuangJian2 {
  2. public static void main(String[] args) {
  3. //数组的定义(声明):数组类型 数组名
  4. int[] nums;
  5. //数组的创建:数组类型 数组名=new 数组类型【数组大小Size】
  6. int[] num=new int[4];
  7. //给上面的数组的赋值
  8. num[0]=0;
  9. num[1]=1;
  10. num[2]=2;
  11. num[3]=3;
  12. //num[4]=4; 执行此条语句会报错:ArrayIndexOutOfBoundsException(数组越界)
  13. //计算所有元素的和
  14. int sum=0;
  15. for (int i = 0; i < num.length; i++) {
  16. sum=sum+num[i];
  17. }
  18. System.out.println(sum);
  19. }
  20. }

数组的四个基本特点

  • 数组的长度是确定的,数组一旦被创建,他的大小是不可以改变的
  • 数组的元素必须是相同的类型,不允许出现混合类型
  • 数组中的元素可以是任意数据类型,包括引用数据类型和基本数据类型
  • 数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量
  • 数组本身就是对象,Java中对象在堆中,因此数组无论保存原始类型还是其他对象类型,数组对象本身就在堆中
  • 数组边界:下标的合法区间:【0,length-1】,如果越界就会报错

运用实例

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

数组使用

  1. public class ShiYong4 {
  2. //数组的使用
  3. public static void main(String[] args) {
  4. //普通For对数组的操作
  5. int[] array={1,2,3,4,5};
  6. //打印全部的数组元素
  7. for (int i = 0; i < array.length; i++) {
  8. System.out.println("数组第"+(i+1)+"元素为:"+array[i]);
  9. }
  10. //求数组所有元素的和
  11. int sum=0;
  12. for (int i = 0; i < array.length; i++) {
  13. sum=sum+array[i];
  14. }
  15. System.out.println("总和为:sum="+sum);
  16. //求数组元素中的最大值
  17. int max=array[0];
  18. for (int i = 1; i < array.length; i++) {
  19. if (array[i]>max){
  20. max=array[i];
  21. }
  22. }
  23. System.out.println("数组中最大的数为:"+max);
  24. //For-Each循环(增强for循环)
  25. //打印数组全部元素
  26. //for(定义一个数组变量(接受数组元素):需要输出的数组名)
  27. for (int arrays:array){
  28. System.out.println(arrays);
  29. }
  30. //数组作为方法使用
  31. arr(array);
  32. //把数组值反转
  33. int[] fan=fan(array);
  34. arr(fan);
  35. }
  36. //数组作为方法使用
  37. public static void arr(int[] array){
  38. for (int i = 0; i < array.length; i++) {
  39. System.out.println("数组第"+(i+1)+"元素为:"+array[i]);
  40. }
  41. }
  42. //把数组值反转
  43. public static int[] fan(int[] array){
  44. int[] result=new int[array.length];
  45. //反转操作
  46. for (int i = 0,j=result.length-1; i < array.length; i++,j--) {
  47. result[j]=array[i];
  48. }
  49. return result;
  50. }
  51. }

多维数组

  • 定义:多维数组可以看成数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组

    二维数组:int[][] a=new int[2][5];

运用实例

  1. public class DuoWei5 {
  2. public static void main(String[] args) {
  3. //数组[2][5]
  4. int[][] a={{1,2},{2,3},{3,4},{4,5},{5,6}};
  5. //a[0] 1,2
  6. //a[1] 2,3
  7. //a[2] 3,4
  8. //a[3] 4,5
  9. //a[4] 5,6
  10. //数组作为方法使用
  11. arr(a[0]);//打印出a[0] 1,2
  12. //打印数组所有元素
  13. for (int i = 0; i < a.length; i++) {
  14. for (int j = 0; j <a[i].length ; j++) {
  15. System.out.print(a[i][j]+" ");
  16. }
  17. System.out.println();
  18. }
  19. }
  20. //数组作为方法使用
  21. public static void arr(int[] array){
  22. for (int i = 0; i < array.length; i++) {
  23. System.out.println(array[i]);
  24. }
  25. }
  26. }

数组(Java)的更多相关文章

  1. 一维数组、二维数组——Java

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

  2. 线性表(存储结构数组)--Java 实现

    /*线性表的数组实现 *特点:插入删除慢需要平均移动一半的数据,查找较快 *注意:有重复和无重复的数据对应的操作会有些不同 *注意数组一旦创建其大小就固定了 *Java集合长度可变是由于创建新的数组将 ...

  3. 树形数组 java

    2^k求法 int lowbit(int x) { return x&(-x); } lowbit()的返回值就是 2^k 次方的值. 基本树形数组的模板 import java.util.* ...

  4. 流程控制与数组——Java疯狂讲义

    顺序结构 if分支语句      if{} 可以有多个else if{} else{} 可以省略 switch分支语句 while循环 do while循环 for循环 嵌套循环 控制循环结构 理解数 ...

  5. ACM-ICPC北京赛区(2017)网络赛2【后缀数组+Java//不会】

    #1579 : Reverse Suffix Array 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There is a strong data structure ...

  6. 合并K个有序数组-Java

    package com.rao.algorithm; import java.util.Arrays; /** * @author Srao * @className MergeK * @date 2 ...

  7. 多线程循环打印数组 -- Java笔记

    问题描述: 现有多个长度相同的数组,现要求使用多线程将数组内的数交替打印. 如: int[] ai = {1,2,3,4,5,6,7}; String[] ac = {"A",&q ...

  8. 13 数组 Java内存分析 三种初始化

    Java内存分析 三种初始化 静态初始化 //静态初始化 创建+赋值 int[] a = {1,2,3}; Man[] mans = {new Man(1,1),new Man(2,2)}; 动态初始 ...

  9. 有序线性表(存储结构数组)--Java实现

    /*有序数组:主要是为了提高查找的效率 *查找:无序数组--顺序查找,有序数组--折半查找 *其中插入比无序数组慢 * */ public class MyOrderedArray { private ...

  10. 优先队列(存储结构数组)--Java实现

    /*优先队列--是对队列的一种改进 *要存储的数据存在优先级--数值小的优先级高--在队头 *优先队列的实现 *1.数组:适合数据量小的情况(没有用rear+front实现) *优先队列头在items ...

随机推荐

  1. TIDB-DM数据迁移第三部(集群管理)

    1.对现在 dm 集群进行缩容,将 free 状态的 worker 下线. tiup dm display dm-test 查看 free 状态节点 tiup dm scale-in dm 172.1 ...

  2. 关于 map 的迭代器

    今天遇到一个问题 CountCompileResult(const LIST_MAP & rfLmCompileWafers) {        for (auto itr = rfLmCom ...

  3. NSQ(8)-有赞相关改进

    如何保证消息队列的高可用(HA) NSQ 本身就是一个分布式消息队列,且支持水平扩展,无单点故障,能在无中断的情况下无缝添加集群结点. nsq用到了集群去保证整个服务的高可用,但并不能保证单个topi ...

  4. atx

    https://github.com/openatx/atx-agent/releases/download/0.9.4/atx-agent_0.9.4_linux_386.tar.gz

  5. 根据XML生成实体类

    因为对接系统的XML所需映射的实体类有几十个,自己来处理不太现实,于是一直找寻找这样的工具,终于让我发现了jaxb2-maven-plugin: http://www.mojohaus.org/jax ...

  6. Websocket(websocket自定义协议)

    是基于TCP的 tcp特征: 我发数据对端可以接收到,对端发数据我可以收到 先发先收到,后发后收到 使用websocket客户端发给服务器数据,服务器回客户端返回数据流程(自定义websocket协议 ...

  7. leetcode 27. 移除元素 【时间击败100.00%】【内存击败84.67%】

    1 public int removeElement(int[] nums, int val) { 2 int last = nums.length - 1; 3 for (int i = 0; i ...

  8. Java流程控制之顺序结构+选择结构

    顺序结构 Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行. 顺序结构是最简单的算法结构. 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是有若干个依次执行的处理步骤组 ...

  9. python利用xlwings写入一行或一列Excel数据

    注意点:这里的sheet参数默认是已经存在的sheet表,如不存在该sheet,则使用add方法新增即可,示例: wb = xw.Book(r"C:\Users\Desktop\result ...

  10. 2022-3-14内部群每日三题-清辉PMP

    1.开发一款银行零售业务新产品的项目正在进行中,由于团队成员缺乏激励,该项目落后于进度.项目经理应该如何激励项目团队? A.提供认可与奖励 B.使用教练和指导技能 C.委托职责 D.应用创造性的问题解 ...