Java学习之==>数组【array】
一、定义数组
/**
* 一维数组定义
*
* 为数组插入元素
*/
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】的更多相关文章
- 数据结构和算法(Java版)快速学习(数组Array)
Java数组 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型. 用类封装数组实现数据结构 数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定 ...
- Java学习之数组的简单用法
•概念 其实所谓的数组指的就是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作. 数组本身属于引用数据类型,那么既然是引用数据类型,这里面实际又会牵扯到内存分配: 而数组的定义语法有两种 ...
- 学习Swift -- 数组(Array) - 持续更新
集合类型--数组 Array是Swift中的一种集合类型:数组,数组是使用有序列表储存同一类型的多个值,与OC的NSArray的最大不同是,Swift的数组是值类型,OC的数组是引用类型 声明数组的方 ...
- JAVA学习笔记--数组初始化
JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...
- PHP学习之数组Array操作和键值对操作函数(一)
PHP 中的数组实际上是一个有序映射.映射是一种把 values关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合, ...
- java collection与数组(Array)互转
先确定几个概念,这里说的数组元素,除基本类型数组外,并非指元素对象本身,而是它们的引用.换句话说,基本数组的元素是数值本身,非基本数组的元素都是一个地址(对应指针). 1.collection的元素不 ...
- Java学习:数组的使用和注意事项
数组 数组的概念:是一种容器,可以同时存放多个数据值 数组的特点: 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可以改变 数组的初始化:在内存当中创建一个数组, ...
- java学习之数组(二)
在上一节中我们讲到了数组的概念,定义,以及在内存当中的表现形式.那么这里我们来说一下,数组的另一种定义方式. 在上一篇当中我们规定是这个样子定义数组的, class ArrDemo { public ...
- java学习之数组(一)【内存】
在java语言当中,为了更方便多个数据的管理,这里提供数组. 比如说,现在我们有一组数据,7,8,9,9,为了保存这四个数据,我们分别要定义变量来保存,少了还好说.但是假如,有100多个数据呢,我们一 ...
随机推荐
- 防sql注入方法
mysql_escape_string(strip_tags($arr)) /** * 函数名称:post_check() * 函数作用:对提交的编辑内容进行处理 * 参 数:$post: 要提交的内 ...
- Java多线程和并发(六),yield函数和中断线程
目录 1.yield函数 2.中断线程 六.yield函数和中断线程 1.yield函数 2.中断线程 (1)已经被抛弃的方法 (2)目前使用的方法
- MessagePack Java 0.6.X 快速开始指南 - 安装
0.6.x 版本的 MessagePack 已经过期被淘汰了.如果你现在开始使用 MessagePack 话,请不要使用这个版本. 我们再这里保留 0.6.x 版本的内容主要用于参考用途. 最新的 M ...
- HGOI 20190821 慈溪一中互测
Problem A 给出一个$n$个点$m$条边的仙人掌图(每条边最多处于一个简单环中). 使用$c$种颜色对这张图中的顶点染色,使得每一条无向边连接的两个点颜色不同. 求染色的方案数,$mod \ ...
- windows如何正确下载补丁包
今天公司让给windows安装补丁,打开链接,我蒙蔽了,这么多包要下载哪个腻?下面来跟杨老师一起学习一下如何确定windows版本,下载正确的补丁包. 首先先看一下下载补丁的页面,懵~~ 登录你需要安 ...
- 多态:JVM是如何进行方法调用的
在我们平时的工作学习中写java代码时,如果我们在同一个类中定义了两个方法名和参数类型都相同的方法时,编译器会直接报错给我们.还有在代码运行的时候,如果子类定义了一个与父类完全相同的方法的时候,父类的 ...
- CodeForces 352C Jeff and Rounding
题意 有一个含有\(2n(n \leqslant2000)\)个实数的数列,取出\(n\)个向上取整,另\(n\)个向下取整.问取整后数列的和与原数列的和的差的绝对值. 就是说,令\(a\)为原数列, ...
- [LOJ3120][CTS2019|CTSC2019]珍珠:生成函数+NTT
分析 容易发现\(D \leq n - 2m\)时,任意数列都满足要求,直接判掉,下文所讨论的均为\(D > n - 2m\)的情况. 考虑把两个数列合并,显然可以认为是两个带标号对象的合并,可 ...
- Unity3D_(数据)JsonUtility创建和解析Json
Json 百度百科:传送门 LitJson创建和解析Json 传送门 Json数据解析在Unity3d中的应用 传送门 一.使用JsonUnity创建Json using System.Collect ...
- VS2015 ASP.NET MVC5 EntityFramework6 Oracle 环境篇
//来源:https://www.cnblogs.com/lauer0246/articles/9576940.html Asp.Net MVC EF各版本区别 2009年發行ASP.NET MVC ...