JavaSE基础知识(4)—数组的应用
一、数组的特点、好处及使用步骤
1、数组的好处
特点:相当于用于保存一组元素的容器
好处:
1、提高代码的简洁性和扩展性,且同时开辟多个空间,提高了效率
2、分类存储,且空间是连续的,容易查找
2、数组的特点
1、数组存储的是相同类型的一组元素
double[] arr = {1.6,2.3,1,2,'a'};
2、数组的定义类型可以是任意类型,包含基本类型或引用类型
String[] arr = {"john","lucy"};
Person[] arr;
int[][] arr;
Person[][] arr;
3、数组本身也属于引用类型,内存的分配和基本类型不同
基本类型:值和变量名都存储在栈中
引用类型:值存储在堆中,变量名存储在栈中
值又称为对象,值中每个元素称为成员
变量名又称为数组名或对象名或引用名
3、数组的四要素
数据类型:任意类型[]
数组名
值(对象)
★下标 :从0开始
注意:访问某个具体的成员,需要通过:数组名[下标]的方式!
4、数组的使用步骤★
(1)数组的动态初始化
(1)声明
数据类型[] 数组名;或
数据类型 数组名[];
(2)开辟空间
数组名 = new 数据类型[长度];//长度必不可少
(3)手动赋值
数组名[下标] = 值;
(4)使用(打印、运算、判断等)
System.out.println(数组名[下标]);
(2)数组的静态初始化
(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]
}
(3)注意事项
①数组的元素如果不赋值,也有默认值
int 0
double 0.0
char \u0000
boolean false
引用类型 null
②访问数组的元素时,下标必须在0—长度-1 的范围内,否则报数组下标越界的异常
③数组的长度,可以通过 数组名.length表示,提高代码的维护性
④数组的赋值和使用,往往可以通过搭配for循环一起操作
for(int i=0;i<数组名.length;i++){
//每一个元素表示为:数组名[i]
}
二、数组的基本及高级使用
| 功能 | 代码 | 功能 | 代码 | |
| 基本使用 | 正序打印 |
for(int i=0;i<arr.length;i++){
|
倒序打印 |
for(int i=arr.length-1;i>=0;i--){
|
| 求和、求平均 |
int sum = 0; |
查找 |
int index=-1; |
|
| 求最值 |
int max = arr[0]; |
排序(冒泡) |
for(int i=0;i<arr.length-1;i++){
|
|
| 复杂使用 | 赋值(传统方式=arr) |
newArr = arr; |
循环赋值 |
①创建新数组,长度=旧数组.length |
| 反转(方式1) |
for(int i=0;i<arr.length/2;i++){
|
反转(方式2) |
①创建新数组,长度=旧数组.length |
|
| 高级使用 | 追加元素 |
假如待添加的元素:add |
插入元素 |
待添加的元素:add |
三、二维数组
1、理解
二维数组本身也属于引用类型,保存的也是地址号
二维数组用于保存多个一维数组的容器,相当于多个一维数组的组合,即二维数组中的每个元素又是一个一维数组
2、数组的使用步骤
(1)动态初始化
(1)声明
数据类型[][] 数组名;
或
数据类型[] 数组名[];
或
数据类型 数组名[][];
(2)开辟空间
格式一:固定列数
数组名 = new 数据类型[行数][列数];//行数相当于二维数组的长度或一维数组的个数,列数相当于每个一维数组中的成员个数
格式二:不固定列数
数组名 = new 数据类型[行数][];
前两步可以合二为一
语法示例:
int[][] arr = new int[5][];
(3)赋值
格式一:固定列数
for(int i=0;i<数组名.length;i++){
for(int j=0;j<数组名[i].length;j++){
数组名[i][j] = 值;
}
}
格式二:不固定列数
for(int i=0;i<数组名.length;i++){
数组名[i]=new 数据类型[长度];//长度不能省略!
for(int j=0;j<数组名[i].length;j++){
数组名[i][j] = 值;
}
}
(4)使用
for(int i=0;i<数组名.length;i++){
for(int j=0;j<数组名[i].length;j++){
System.out.println(数组名[i][j]);
}
}
(2)静态初始化
(1)声明并初始化
数据类型[][] 数组名 ={{值,值},{值,值,值}};或
数据类型[][] 数组名 =new 数据类型[][]{{值,值},{值,值,值}};
(2)使用
for(int i=0;i<数组名.length;i++){
for(int j=0;j<数组名[i].length;j++){
System.out.println(数组名[i][j]);
}
}
JavaSE基础知识(4)—数组的应用的更多相关文章
- JavaSE基础知识总结
最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- JavaSE基础知识(5)—面向对象(对象数组和对象关联)
一.对象数组 1.说明 数组的定义类型为对象类型 2.动态初始化 1.声明并开辟空间 Person[] pers = new Person[长度];2.赋值 for(int i=0;i<pers ...
- javaSE基础知识(走向编程的门口)— 更新完毕
前言:玩儿编程最重要的一点:不要怕麻烦,感觉是在浪费时间: 能动手绝不哔哔:只要脑袋不傻,编程都是"一看就会,一练就废",开始学的时候,就算再基础的东西都建议手敲一遍 要有囫囵吞枣 ...
- 【学习】基础知识:数组和矢量计量【Numpy】
Numpy是高性能科学计算和数据分析的基础包.功能如下: ndarray 一个具有矢量算法运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环) 用于读 ...
- JavaSE基础知识(2)—变量和运算符
一.变量 1.理解 概念:内存中的一块数据存储空间 2.变量的三要素 数据类型变量名变量值 3.变量的语法和使用步骤★ 步骤1:声明变量(计算机开辟一块空间) 数据类型 变量名;步骤2:为变量赋值(初 ...
- C语言基础知识【数组】
2017年7月11日17:34:05C 数组1.C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量.数组的声明并不 ...
- PHP基础知识之数组
数组的定义: array( key => value , ... ) // 键(key)可以是一个整数或字符串,键可以省略,默认从0开始索引 // 值(value)可以是任意类型的值或者简写的方 ...
- Java基础知识系列——数组
数组是我们在编程中常用到的一种数据结构. 数组创建有三种方式,以int类型为例: 1.int value[] = new int[]{1,2,3,4,5}; //{}中的是元素 2.int value ...
随机推荐
- write(6)、write(10)和write(16)以及read(6)、read(10)和read(16)的区别与应用
大家知道,我们读写硬盘的时候发送的命令为SCSI READ或SCSI WRITE.即SCSI读和SCSI写命令.但是READ和WRITE有很多种,这些命令的应用场合是什么呢? 最重要的一点就是,这是跟 ...
- git之sourceTree操作流程
1x.sourceTree的使用流程 12.Git管理工具对比(GitBash.EGit.SourceTree) 11.SourceTree使用SSH克隆码云项目 ====== 1x.source ...
- 铁板纹理 铁锈Rust
软件:Substance Designer 2017.1.2 这篇文章记录铁锈的制作方法,铁锈效果见图一 图一:铁锈Rust 铁锈的具体制作过程为: 使用BnW Spots 2(Noise)结点生成噪 ...
- Cookie的存活时间
1. 默认情况下,cookie数据保存到内存里,当浏览器关闭后,Cookie数据被销毁 2. 持久化存储: setMaxAge(int seconds) 1. 正数:将Cookie数据写到硬盘的文件中 ...
- 【Linux】【GIt】Linux下安装和配置Git(转)
yum安装 这里采用的是CentOS系统,如果采用yum安装git的方式: yum install git 很快就okay了,但是这里遇到一个问题.: 在网上搜寻了原因,说是要安装: yum inst ...
- 学习笔记:FIS3
http://fis.baidu.com/ FIS3官网 [配环境]: 1.先要安装node.js https://nodejs.org/en/ NODE.js官网(下载这个,下载后运行: http ...
- 分布式计算课程补充笔记 part 2
▶ 并行计算八字原则:负载均衡,通信极小 ▶ 并行计算基本形式:主从并行.流水线并行.工作池并行.功能分解.区域分解.递归分治 ▶ MPI 主要理念:进程 (process):无共享存储:显式消息传递 ...
- mazing ASP.NET Core 2.0【转】
前言 ASP.NET Core 的变化和发展速度是飞快的,当你发现你还没有掌握 ASP.NET Core 1.0 的时候, 2.0 已经快要发布了,目前 2.0 处于 Preview 1 版本,意味着 ...
- python解决open()函数、xlrd.open_workbook()函数文件名包含中文,sheet名包含中文报错的问题
问题现象: 1.使用open()函数.xlrd.open_workbook()函数打开文件,文件名若包含中文,会报错找不到这个文件或目录. 2.获取sheet时若包含中文,也会报错. #打开文件 fi ...
- openvpn通过ldap或ad统一认证解决方案思路分享
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/986933 缘起:成 ...