>[success] # 数组
* 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是在内存空间中申请一段`连续`的存储单元。
![](https://img.kancloud.cn/78/14/781458ee41cdfa399259f00fe76bb703_558x168.png)
* 数组是相同数据类型的多个元素的容器,但需要结合**隐式类型转换**来考虑,例如`dobule `类型数组可以存`byte short int long float double` 类型,元素按线性顺序排列,在Java语 言中体现为一种`引用`数据类型
* `数据类型[] 数组名称 = new 数据类型[数组的长度];`
~~~
int[] numLs = new int[5];
~~~
* 调用数组的length属性可以获取数组的长度:
* 可以通过下标的方式访问数组中的每一个元素。需要注意的是:数组的下标从0开始,对于长度为n的数组,下标的范围是0~n-1。
>[danger] ##### 数组的声明
* **动态方法**声明
~~~
int[] arr1 = new int[2]; // 推荐写法
int arr2[] = new int[2]; // 不推荐写法
~~~
* **静态声明** `数据类型[] 数组名称 = {初始值1, 初始值2, ...}`
~~~
boolean[] arr4 = new boolean[]{true, true, false, false}; // 特殊写法不推荐
char[] arr3 = {'a', 'b', 'c', 'd'}; // 推荐写法,是上面写法的缩写,即定义初始值也定义了长度
~~~
* 基本类型的数组(数据元素为基本类型)创建后,其元素的初始值:
* * byte、short、char、int、long为 `0`;
* * char `\u0000` 空格
* * float 和 double为 `0.0`;
* * boolean 为 `false`
* * 引用数据类型 为 `null`
~~~
public class ArrayTest {
public static void main(String[] args) {
int[] iLs = new int[5];
System.out.println(iLs[0]); // 0
byte[] bLs = new byte[5];
System.out.println(bLs[0]); // 0
short[] sLs = new short[5];
System.out.println(sLs[0]); // 0
char[] cLs = new char[5];
System.out.println(cLs[0]); // `\u0000` 实际控制台是一个空格展示
long[] lLs = new long[5];
System.out.println(lLs[0]); // 0
float[] fLs = new float[5];
System.out.println(fLs[0]); // 0.0
double[] dLs = new double[5];
System.out.println(dLs[0]); // 0.0
boolean[] boolLs = new boolean[5];
System.out.println(boolLs[0]); // false
}
}
~~~
* 二者区别
**静态初始化**:手动指定数组的元素,系统会根据元素的个数,计算出数组的长度。
**动态初始化**:手动指定数组长度,由系统给出默认初始化值
>[danger] ##### length 打印数组长度
~~~
public class ArrayTest {
public static void main(String[] args) {
int[] iLs = new int[5];
System.out.println(iLs.length); // 5
}
}
~~~
>[danger] ##### 打印数组指定项
* 超过初始化长度则数组越界报错
~~~
public class ArrayTest {
public static void main(String[] args) {
int[] iLs = new int[5];
/*
* 数组越界
* java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds fo length 5
*/
// System.out.println(iLs[5]);
System.out.println(iLs[4]); // 0
}
}
~~~
>[danger] ##### 循环打印每一项
~~~
public class ArrayTest {
public static void main(String[] args) {
int[] iLs = { 1, 8, 9, 0, 10 };
for (int i = 0; i < iLs.length; i++) {
System.out.println(i + "----" + iLs[i]);
}
}
}
~~~
* 打印结果
~~~
0----1
1----8
2----9
3----0
4----10
~~~
- windows -- 环境变量
- Vscode -- 编写java
- 初始java
- java -- 关键字
- 编写第一个java程序
- java -- 注释
- 计算机存储 -- 进制
- java -- 类型
- java -- 变量
- 数字类型
- 布尔类型
- 字符类型
- 类型转换
- 双等比较是什么
- java -- 运算符
- 算数运算符
- 字符串拼接
- 关系/比较运算符
- 自增减运算符
- 逻辑运算符
- 三目运算
- 赋值运算符
- 移位运算符
- 位运算符
- 运算符优先级
- java -- 流程控制语句
- if /else if /if -- 判断
- switch case分支结构
- for -- 循环
- 用双重for循环
- while -- 循环
- do while -- 循环
- 案例练习
- java -- 数组
- 数组的存储
- 数组的增删改查
- 数组的特点
- 数组案例
- 二维数组
- 数组的工具方法
- java -- 方法
- java -- 方法的重载
- java -- 方法的调用流程
- java -- 类方法传参注意事项
- java -- 方法练习案例
- 对比 return break continue
- for each循环
- java -- 基础练习
- java -- 面向对象
- java -- 创建类和对象
- java -- 访问控制符
- java -- 类成员方法
- java -- 构造方法
- java -- this
- java -- 封装
- java -- 对象内存图
- java -- 创建对象案例
- java -- static
- java -- 继承
- super -- 关键字
- java -- 构造块和静态代码块
- java -- 重写
- java -- final
- java -- 多态
- java -- 抽象类
- java -- 接口
- 引用类型数据转换
- 综合案例
- java -- 内部类
- java -- 回调模式
- java -- 枚举类型
- java -- switch 使用枚举
- java -- 枚举方法使用
- java -- 枚举类实现接口
- java -- javaBean
- java -- package 包
- java -- import
- java -- 递归练习
- java -- 设计模式
- 单例模式
- java -- 注解
- java -- 元注解
- Java -- 核心类库
- java -- 处理字符串
- Java -- String
- String -- 常用方法
- String -- 正则
- Java -- StringBuilder 和 StringBuffer
- 知识点
- Java -- StringJoiner 字符串拼接
- 练习题
- 字符串的总结
- Java -- 包装类
- Integer
- Double
- Boolean
- Character
- java -- 集合类
- java -- util.Collection
- Iterator接口
- java -- util.List
- java -- ArrayList
- java -- util.Queue
- java -- util.Set
- java -- util.Map
- java -- util.Collections
- Java -- Math
- Java -- java.lang
- Java -- Object
- Java -- 获取当前时间戳
- Java -- 异常
- Java -- java.util
- java -- Date
- java -- Calender
- Java -- java.text
- Java -- SimpleDateFormat
- Java -- java.time
- Java -- java.io
- java -- io.File
- java -- 泛型
- IDEA -- 用法