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多个数据呢,我们一 ...
随机推荐
- maven 学习之路一
一.mave介绍: maven :我的理解就是一个代码构建管理的一个工具.类似的工具有gradle,ant等. 官方理解:Apache Maven is a software project mana ...
- springmvc框架中的核心对象DispatcherServlet
SpringMVC是Spring中的模块,它实现了mvc设计模式,首先用户发起请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映 ...
- js 简单实现隐藏和显示
<html> <head> <meta charset="gb2312"> <title>隐藏和显示</title> & ...
- 第二章 Vue快速入门-- 18 v-for中key的使用注意事项
注意:如果属性和方法还没定义直接使用的话,就会报 xxx is not defined 导致界面不能正常显示.我看视频教程里老师的可以直接使用,而且界面正常显示,可能是vue版本不同吗?还不清楚 ...
- RocketMQ和Kafka的差异对比
Broker差异 主从差异: kafka的master/slave是基于partition维度的,而rocketmq是基于broker维度的:kafka的master/slave是可以切换的,而roc ...
- C#中引用参数ref和输出参数out
引用参数 用于按引用传递自变量. 为引用参数传递的自变量必须是具有明确值的变量,并且在方法执行期间,引用参数指明的存储位置与自变量相同. 引用参数使用 ref 修饰符进行声明. 输出参数 用于按引用传 ...
- 计算机网络(二),TCP/IP四层模型常见协议
目录 1.应用层协议 2.传输层协议 3.网络层协议 4.链路层协议 二.TCP/IP四层模型常见协议 1.应用层协议 (1)POP3 (2)FTP (3)HTTP (4)Telnet (5)SMTP ...
- CF #355div2 D 宝藏与钥匙 dp 二维数组智商题
D. Vanya and Treasure time limit per test 1.5 seconds memory limit per test 256 megabytes input stan ...
- HDU 3507 [Print Article]DP斜率优化
题目大意 给定一个长度为\(n(n \leqslant 500000)\)的数列,将其分割为连续的若干份,使得 $ \sum ((\sum_{i=j}^kC_i) +M) $ 最小.其中\(C_i\) ...
- JavaWeb_使用dom4j解析、生成XML文件
dom4j 官网 xml解析DOM文档对象模型(树形结构) DOM方式解析:把xml文档加载到内存形成树形结构,可以进行增删改的操作 Learn 使用dom4j解析文件"NewFile. ...