数组的定义

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

数组的声明和创建

基本介绍

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

运用实例

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

数组的四个基本特点

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

运用实例

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

数组使用

public class ShiYong4 {
//数组的使用
public static void main(String[] args) {
//普通For对数组的操作
int[] array={1,2,3,4,5};
//打印全部的数组元素
for (int i = 0; i < array.length; i++) {
System.out.println("数组第"+(i+1)+"元素为:"+array[i]);
}
//求数组所有元素的和
int sum=0;
for (int i = 0; i < array.length; i++) {
sum=sum+array[i];
}
System.out.println("总和为:sum="+sum);
//求数组元素中的最大值
int max=array[0];
for (int i = 1; i < array.length; i++) {
if (array[i]>max){
max=array[i];
}
}
System.out.println("数组中最大的数为:"+max); //For-Each循环(增强for循环)
//打印数组全部元素
//for(定义一个数组变量(接受数组元素):需要输出的数组名)
for (int arrays:array){
System.out.println(arrays);
} //数组作为方法使用
arr(array); //把数组值反转
int[] fan=fan(array);
arr(fan);
} //数组作为方法使用
public static void arr(int[] array){
for (int i = 0; i < array.length; i++) {
System.out.println("数组第"+(i+1)+"元素为:"+array[i]);
}
} //把数组值反转
public static int[] fan(int[] array){
int[] result=new int[array.length];
//反转操作
for (int i = 0,j=result.length-1; i < array.length; i++,j--) {
result[j]=array[i];
}
return result;
}
}

多维数组

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

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

运用实例

public class DuoWei5 {
public static void main(String[] args) {
//数组[2][5]
int[][] a={{1,2},{2,3},{3,4},{4,5},{5,6}};
//a[0] 1,2
//a[1] 2,3
//a[2] 3,4
//a[3] 4,5
//a[4] 5,6
//数组作为方法使用
arr(a[0]);//打印出a[0] 1,2 //打印数组所有元素
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();
}
}
//数组作为方法使用
public static void arr(int[] array){
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}

数组(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. MyBatis_06(自定义映射resultMap)

    主题:自定义映射resultMap "自定义映射resultMap",可以解决什么问题: 1-"属性" 和 "字段名" 不一致的情况 2-& ...

  2. linux扩展与缩减lv大小

    在线扩展lv 给vg添加新的pv并扩展lv大小 将新加磁盘生成pv pvcreate /dev/sdd 将pv加入vg vgextend vg_name /dev/sdd 先扩展lv物理边界,大小增加 ...

  3. java annotation(如何创建新的注解)小结

    "注解"有三种 1:无实际参数,只有声明 2:只存在单一参数,有些像方法调用 3:有多个参数 标准的"注解"就先不总结了. 想总结一下<如何创建自己的注解 ...

  4. Oracle一次插入多条数据

    Oracle一次插入多条数据(批量插入)语法:INSERT ALL  INTO tableName (column1, column2, column_n) VALUES (expr1, expr2, ...

  5. JQuery的dataTable实现分页

    关于dataTable基本使用有很多帖子说的很详细,在此不做详述. 最近使用dataTable处理服务器返回分页数据时遇到问题,问题解决后有一些心得分享一下: 1. 如果打开界面通过dataTable ...

  6. 关于osqp

    看了osqp的英文概要,记录如下: 1.采用交替方向乘子法 2.通过因式分解高速缓冲和热启动可以减少运算时间 3.适合嵌入式系统,实测mpc在10ms之内,路径规划在20ms左右(少障碍物),障碍物多 ...

  7. SparkRDD所有算子操作,建议全部手敲一遍

    说明: 1.以下方法全部来自这个RDD.scala,可以自己看源码 2.使用$SPARK_HOME/bin/spark-shell运行代码 3.注释部分是运行结果 //org.apache.spark ...

  8. SAP 没有开工的产线 闲置成本 处理方案

    SAP  没有开工的产线   闲置成本  处理方案 需要沟通的请联系  wx  :erpworld

  9. Java-面向对象基础 this& 重载

    1.this表示当前对象 获取当前对象的属性 使用this调用当前属性 2.重载 如果两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载

  10. ASP.NET Core Web API通过中间件或UseExceptionHandler异常处理方法

    UseExceptionHandler app.UseExceptionHandler(configure => { configure.Run(async context => { va ...