一、数组的动态初始化

1、声明
数据类型[] 数组名;或
数据类型 数组名[];
2、开辟空间
数组名 = new 数据类型[长度];//长度必不可少
3、手动赋值
数组名[下标] = 值;
4、使用(打印、运算、判断等)
System.out.println(数组名[下标]);

【注意事项】

① 数组的元素如果不赋值,也有默认值
int 0
double 0.0
char \u0000
boolean false
引用类型 null
② 访问数组的元素时,下标必须在0——长度-1 的范围内,否则报数组下标越界的异常
③ 数组的长度,可以通过 数组名.length表示,提高代码的维护性
④ 数组的赋值和使用,往往可以通过搭配for循环一起操作
for(int i=0;i<数组名.length;i++){
  //每一个元素表示为:数组名[i]
}

二、数组的静态初始化

步骤1:声明并初始化

语法:数据类型[] 数组名 = new 数据类型[]{值,值,值};
或 数据类型[] 数组名 = {值,值,值};

int[] arr = {3,4,5,6,100};
//int[] arr2 = new int[] {3,4,5,6,100};

步骤2:使用

for(int i=0;i<数组名.length;i++){
  //每一个元素表示为:数组名[i]
}

三、数组的复杂使用

  • 数组的赋值
int[] arr1={1,2,3};
int[] arr2=arr1;  // 引用型赋值,赋的是地址

特点:

  数组属于引用类型,数组型数据是对象,数组中的每个元素相当于该对象的成员变量。

基本类型的赋值,赋的是值(内容),其中一个变量对其更改不影响另外一个
引用类型的赋值,赋的是地址,两个引用共同指向一个地址(对象),所以其中一个引用对其更改影响另外一个

注意:如果希望引用类型赋值时,只赋内容,则可以使用循环赋值的方式,语法:

int[] array2 = new int[array1.length];
for(int i=0;i<array2.length;i++){
array2[i] = array1[i];
}
  • 数组的反转

方式一:

for(int i=0;i<arr.length/2;i++){
//交换两个数 i vs arr.length-1-i
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}

方式二:

//①创建一个新数组,长度=arr.length
int[] newArr = new int[arr.length];
//②逆序赋值
/*
i
0 arr.length-1
1 arr.length-2
*/
for(int i=0,j=arr.length-1;i<arr.length;i++,j--){
newArr[j]=arr[i];
}
//③将新数组的地址赋值给arr
arr=newArr;

四、数组的高级使用

  • 数组的添加
//----------------具体的添加业务----------
//①新建一个数组,长度=arr.length+1
int[] newArr = new int[arr.length+1]; //②依次为新数组的元素赋值
for(int i=0;i<arr.length;i++){
newArr[i] = arr[i];
}
//③将add赋值到新数组的空位上
newArr[newArr.length-1] = add; //④将newArr的地址赋值给arr
arr = newArr;
System.out.println("添加成功!");
  • 数组的插入
//----------------------具体的插入业务-----------

//①创建新数组,长度=arr.length+1
int[] newArr = new int[arr.length+1]; //②循环赋值
for(int i=0;i<arr.length;i++){
newArr[i] = arr[i]; } //③循环后移
for(int i=newArr.length-1;i>index;i--){
newArr[i]=newArr[i-1]; } //④将新元素赋值到index位置上
newArr[index] = add; //⑤将newArr的地址赋值给arr
arr = newArr;
System.out.println("插入成功!");

五、二维数组

二维数组其实就是 一维数组的组合,也就是一维数组的定义类型又为一维数组

方式一:动态初始化

1.声明

数据类型[][] 数组名;或
数据类型 数组名[][];
数据类型[] 数组名[];

int[][] num;
int[] num[];
int num[][];

2.开辟空间

情况1:固定列数
数组名 = new 数据类型[行数][列数];
情况2:不固定列数
数组名 = new 数类型[行数][];

3.赋值
情况1:固定列数

for(int i=0;i<nums.length;i++){//i:行数
for(int j=0;j<nums[i].length;j++){//j:列数
nums[i][j]=值;
}
}

情况2:不固定列数

for(int i=0;i<nums.length;i++){//i:行数
nums[i]=new 数据类型[长度];
for(int j=0;j<nums[i].length;j++){//j:列数
nums[i][j]=值;
}
}

4.使用(打印、求和、最值)

for(int i=0;i<nums.length;i++){//i:行数
for(int j=0;j<nums[i].length;j++){//j:列数
System.out.print(nums[i][j]);
}
}

方式二:静态初始化

1.声明并初始化

数据类型[][] 数组名={{},{},{}};

数据类型[][] 数组名=new 数据类型[][]{{},{},{}};

2.使用(打印、求和、最值)

for(int i=0;i<nums.length;i++){//i:行数
for(int j=0;j<nums[i].length;j++){//j:列数
System.out.print(nums[i][j]);
}
}

Java数组的使用的更多相关文章

  1. Java 数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100 ...

  2. 第5章 Java数组

    1.什么是数组 数组可以想象成一个巨大的盒子,这个盒子里面存放的是同一个数据类型的数据 例如:int[] scores = {78,68,94,93}; 2.如何使用Java中的数组 2.1申明数组 ...

  3. Java 数组基础

    数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...

  4. Java数组及其内存分配

    几乎所有的程序设计语言都支持数组.Java也不例外.当我们需要多个类型相同的变量的时候,就考虑定义一个数组.在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静 ...

  5. [转载]Java数组扩容算法及Java对它的应用

    原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...

  6. Java数组技巧攻略

      Java数组技巧攻略 0.  声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...

  7. Java数组扩容算法及Java对它的应用

    1)Java数组对象的大小是固定不变的,数组对象是不可扩容的.利用数组复制方法可以变通的实现数组扩容.System.arraycopy()可以复制数组.Arrays.copyOf()可以简便的创建数组 ...

  8. Java数组与vector互转

    Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...

  9. 比较Java数组,ArrayList,LinkedList,Vector 性能比较

    public class PerformanceTester { public static final int TIMES=100000; public static abstract class ...

  10. Java数组的12个常用方法

    以下是12个关于Java数组最常用的方法,它们是stackoverflow得票最高的问题. 声明一个数组 String[] aArray = new String[5]; String[] bArra ...

随机推荐

  1. redis面试题集錦

    1为什么Redis需要把所有数据放到内存中? Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘.所以Redis具有快速和数据持久化的特性.如果不将数据放到内存中,磁盘 ...

  2. 洛谷P4003 [国家集训队2017]无限之环 网络流 最小费用最大流

    题意简述 有一个\(n\times m\)棋盘,棋盘上每个格子上有一个水管.水管共有\(16\)种,用一个\(4\)位二进制数来表示当前水管向上.右.下.左有个接口.你可以旋转除了\((0101)_2 ...

  3. 文件打包压缩——tar

    tar——压缩数据/解压数据内容 命令语法: tar zcvf  生成压缩包路径/压缩包.tar.gz    压缩数据01,02,03.... 巧记: 压缩名称为tar.gz,可以理解为tar命令,g ...

  4. [CF938E]Max History题解

    题面 >CF传送门< >洛谷传送门< 解法 显而易见,对于一个数\(a_i\),若果它出现在\(f\)序列中,必定\(a_i\)之前的元素要小于\(a_i\),我们设\(cnt ...

  5. 【JavaMail】JavaMail整合RabbitMq发送邮件案例

    前言 Linux安装RabbitMQ:https://www.cnblogs.com/jxd283465/p/11975094.html SpringBoot整合RabbitMQ:https://ww ...

  6. Python_021(内置方法讲解二)

    一.内置方法二 1.__del__方法: a:构造方法:创建一个空间,  析构方法;释放一个空间; b:触发del的情况:Python解释器的垃圾回收机制,和遇到 del 对象名 c:析构方法的思想: ...

  7. 长链剖分优化树形DP总结

    长链剖分 规定若\(x\)为叶结点,则\(len[x]=1\). 否则定义\(preferredchild[x]\)(以下简称\(pc[x]\),称\(pc[x]\)为\(x\)的长儿子)为\(x\) ...

  8. Han Xin and His Troops

    Han Xin and His Troops 中国剩余定理 JAVA板子 /*中国剩余定理,根据公式需要求取大数的逆元*/ import java.math.BigInteger; import ja ...

  9. oracle数据泵导入导出

    1.首先建立DUMP_DIR sqlplus / as sysdba select * from dba_directories 如果没有DUMP_DIR就执行下面的语句 CREATE OR REPL ...

  10. 安装完Fedora 18后需要做的事情

    折腾了好久,在网上查看了好多资料,总算吧安装好的Fedora 18配置得差不多了,现在将过程记录下来,供以后查看用,同时也许还能帮助到和我遇到同一问题的朋友们,以后再有什么再继续添加吧. 一.添加 y ...