一、定义数组

/**
* 一维数组定义
*
* 为数组插入元素
*/
public void case1() {
// 声明
int[] arr1; // 声明+初始化
int[] arr2 = new int[3];
// 为数组赋值
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 3; // 声明+静态初始化,arr3和arr4一样
int[] arr3 = new int[]{1, 2, 3, 4, 5};
int[] arr4 = {1, 2, 3, 4, 5};
}

二、数组的遍历

/**
* 一维数组的访问&遍历
*/
public void case2() {
int[] arr = new int[]{1, 2, 3, 4, 5}; // 普通for循环
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
} // foreach, 增强for循环
for (int num : arr) {
System.out.println(num);
} // 第三种方式,jdk1.8支持该种方式
Arrays.stream(arr).forEach(System.out::println);
}

三、二维数组

/**
* 二维数组的定义,初始化,访问,遍历
*/
public void case3() { // 声明
int[][] arr1; // 声明+初始化
int[][] arr2 = new int[3][2];
arr2[0][0] = 1;
arr2[0][1] = 1; // 声明+静态初始化,3*3
int[][] arr3 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
} /**
* 二维数组的遍历
*/
public void case4() { int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 第一种方式
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
} // 第二种方式
for (int[] ints : arr) {
for (int i : ints) {
System.out.println(i);
}
}
}

四、总结

定义

  • 多个相同数据类型的数据按着顺序排列在一起组成的结构

属性

  • 名称: 存储数组在内存中的地址
  • 索引: 每个元素在数组中都有唯一的位置用于定位元素
  • 元素: 数组中的每一个数据,即为元素
  • 长度: 即数组中元素的个数

特点

  • 元素有序排列
  • 内存中空间连续
  • 属于引用数据类型

注意

  • 长度一旦指定即不可修改

五、练习

1、定义一个整型数组,找最大的元素

/**
* 数组练习:定义一个整型数组,找最大的元素
*/
public void case1(){
int[] arr = new int[10];
for (int i=0;i<10;i++){
arr[i] = i;
}
System.out.println(Arrays.toString(arr));
int max = arr[0];
for (int j=0;j<arr.length;j++){
if (arr[j] > max){
max = arr[j];
}
}
System.out.println(max);
}

2、定义一个二维数组,求所有元素的和

/**
* 数组练习:定义一个二维数组,求所有元素的加和
*/
public void case2(){
// 声明和初始化一个二维数组
int[][] arr = new int[5][3];
// 生成一个二维数组
for (int i=0;i<5;i++){
for (int j=0;j<3;j++){
arr[i][j] = i + j;
System.out.print(arr[i][j]+" ");
}
}
// 循环二维数组的每个元素然后相加
int sum = 0;
for (int i=0;i<arr.length;i++){
for (int j=0;j<arr[i].length;j++){
sum += arr[i][j];
}
}
// 换行
System.out.println();
System.out.println(sum);
}

3、往数组指定位置插入/删除一个元素

/**
* 往数组指定位置插入一个元素
*/
int[] insertarray(int[] arr, int index, int value){ 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];
}
newArr[index] = value;
arr = newArr; return arr;
} /**
* 删除数组中指定位置的元素
*/
int[] deletearray(int[] arr, int index){ int[] newArr = new int[arr.length - 1];
for (int i = 0; i <= arr.length - 1; i++){
if (i < index){
newArr[i] = arr[i];
}
else if (i > index){
newArr[i-1] = arr[i];
}
}
return newArr;
}

Java学习之==>数组【array】的更多相关文章

  1. 数据结构和算法(Java版)快速学习(数组Array)

    Java数组 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型. 用类封装数组实现数据结构 数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定 ...

  2. Java学习之数组的简单用法

    •概念 其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作. 数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配: 而数组的定义语法有两种 ...

  3. 学习Swift -- 数组(Array) - 持续更新

    集合类型--数组 Array是Swift中的一种集合类型:数组,数组是使用有序列表储存同一类型的多个值,与OC的NSArray的最大不同是,Swift的数组是值类型,OC的数组是引用类型 声明数组的方 ...

  4. JAVA学习笔记--数组初始化

    JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...

  5. PHP学习之数组Array操作和键值对操作函数(一)

    PHP 中的数组实际上是一个有序映射.映射是一种把 values关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合, ...

  6. java collection与数组(Array)互转

    先确定几个概念,这里说的数组元素,除基本类型数组外,并非指元素对象本身,而是它们的引用.换句话说,基本数组的元素是数值本身,非基本数组的元素都是一个地址(对应指针). 1.collection的元素不 ...

  7. Java学习:数组的使用和注意事项

    数组 数组的概念:是一种容器,可以同时存放多个数据值 数组的特点: 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可以改变 数组的初始化:在内存当中创建一个数组, ...

  8. java学习之数组(二)

    在上一节中我们讲到了数组的概念,定义,以及在内存当中的表现形式.那么这里我们来说一下,数组的另一种定义方式. 在上一篇当中我们规定是这个样子定义数组的, class ArrDemo { public ...

  9. java学习之数组(一)【内存】

    在java语言当中,为了更方便多个数据的管理,这里提供数组. 比如说,现在我们有一组数据,7,8,9,9,为了保存这四个数据,我们分别要定义变量来保存,少了还好说.但是假如,有100多个数据呢,我们一 ...

随机推荐

  1. Linux下putenv()函数导致composer更新失败

    bug复现: 原因: putenv() 函数设置特定的环境变量有可能是一个潜在的安全漏洞,所以这个函数在php配置文件中是默认禁止的,在 php.ini 中查找此函数,然后将此函数删除掉,重载配置即可 ...

  2. SQL Server里面如何导出包含数据的SQL脚本

    通常情况下,SQL Server里面的生成SQL脚本,只会包含数据库及表的字段结构,而不会包含表的数据,也就是SQL脚本里面只有Create database,Create table 这样的语句,没 ...

  3. 清北学堂dp图论营游记day3

    .状态压缩dp: 对于这个我们引入二进制状态压缩,因为任何一个数都可以二进制表示,而其二进制表示上每一位都可以表示当前位置是否有元素,这就构成了状态压缩. 对于这个题,上下行&一下就行. 状压 ...

  4. 使用xpath提取页面所有a标签的href属性值

    # -*- coding: utf-8 -*- #1.选取节点 #获取所有的div元素 //div #/代表获取根节点的直接子元素 #获取所有带有id属性的div //div[@id] #2.谓词(索 ...

  5. vue data数据恢复初始化

    Object.assign(this.$data, this.$options.data())

  6. ThinkPHP 模型方法 setInc() 和 setDec()

    TP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 $User::where('id=5')->setInc('score', ...

  7. Discuz升级

      1.下载论坛程序文件 2.备份数据库 3.建立文件夹 old,旧程序除了 data , config, uc_client, uc_server 目录以外的程序移动进入 old目录中4. 上传 u ...

  8. 阅读之Redis性能

    Redis作为一种KV缓存服务器,有着极高的性能,相对于memcache,Redis支持更多中数据类型,因此在业界广泛应用. Redis为什么快: 数据是存储在内存中的. Redis是单线程的. 将数 ...

  9. LINUX笔记之二常用命令(权限管理命令)

    1. +增加权限:-去掉权限:=直接赋权. r(4)w(2)x(1) 重点掌握:通过数字授权,例如rxwr-xr--是754 例题:用root用户创建目录并在此目录新建文件,之后更改新文件的权限为77 ...

  10. SQL Server自动备份

    1.打开SQL Server Management Studio 数据库-管理-维护计划,右键,维护计划向导 2.在弹出页面右下方点击[更改],修改计划执行方案 根据需要,修改执行时间 3.修改完毕后 ...