范例: double[] array2 = new double[]{11.1,22.2,33.3};
完整格式: 数据类型[] 数组名 = {元素1,元素2,元素3...};
范例: int[] array = {11,22,33};
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo1 {
public static void main(String[] args) {
//需求1:定义数组存储5个学生的年龄
int[] arr1 = new int[]{11,12,13,14,15};
int[] arr2 = {11,12,13,14,15};
//需求2:定义数组存储3个学生的姓名
String[] arr3 = new String[]{"张三","李四","王五"};
String[] arr4 = {"张三","李四","王五"};
//需求3:定义数组存储4个学生的身高
double[] arr5 = new double[]{1.93,1.75,1.73,1.81};
double[] arr6 = {1.93,1.75,1.73,1.81};
}
}
数组的地址值和元素访问
数组的地址值
数组的地址值表示数组在内存中的位置
定义一个数组,就是在内存中开辟了一处空间,如下图:
例如:
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo1 {
public static void main(String[] args) {
//需求1:定义数组存储5个学生的年龄
int[] arr1 = new int[]{11,12,13,14,15};
int[] arr2 = {11,12,13,14,15};
//需求2:定义数组存储3个学生的姓名
String[] arr3 = new String[]{"张三","李四","王五"};
String[] arr4 = {"张三","李四","王五"};
//需求3:定义数组存储4个学生的身高
double[] arr5 = new double[]{1.93,1.75,1.73,1.81};
double[] arr6 = {1.93,1.75,1.73,1.81};
System.out.println(arr6);//[D@f6f4d33
}
}
(运行结果截图)
扩展:
解释一下地址值的格式含义 [D@f6f4d33
[ :表示当前是一个数组
D:表示当前数组里面的元素都是double类型的
@:表示一个间隔符.(固定格式)
f6f4d33:数组真正的地址值
平时我们习惯性地会把这个整体叫做数组的地址值
数组元素访问
格式: 数组名[索引];
索引
**索引:**也叫做下标,角标.
**索引的特点:**从0开始,逐个+1增长,连续不间断
练习:利用索引对数组中的元素进行访问
1.获取数组里面的元素
格式: 数组名[索引];
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo2 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
//获取数组中的第一个元素
//其实就是0索引上对应的元素
int number = arr[0];//1
System.out.println(number);
//获取数组中1索引上对应的数据,并直接打印出来
System.out.println(arr[1]);//2
}
}
(运行结果截图)
2.把数据存储到数组当中
格式: 数组名[索引] = 具体数据/变量;
细节:一旦覆盖之后,原来的数据就不存在了.
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo3 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
arr[0] = 100;
System.out.println(arr[0]);//100
}
}
(运行结果截图)
数组的遍历和三道综合练习
什么是数组的遍历?
**数组遍历:**将数组中的所有内容取出来,取出来后可以(打印,求和,判断)
**注意:**遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印
小提示:
在Java当中,关于数组的一个长度属性: length
调用方式: 数组名.length
java复制代码
package arraydemo;
public class ArrayDemo4 {
public static void main(String[] args) {
//1.定义数组
int[] arr = {1,2,3,4,5};
//2.获取数组里面的所有元素
/*System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);*/
//利用循环改进代码
//开始条件:0
//结束条件:数组的长度 - 1 (最大索引)
/*for (int i = 0; i <= 4; i++) {
//i:0 1 2 3 4
System.out.println(arr[i]);
}*/
//在Java当中,关于数组的一个长度属性: length
//调用方式:数组名.length
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
扩展:
IDEA提供的自动地快速生成数组的遍历方式: 数组名.fori
练习:遍历数组并求和
**需求:**定义一个数组,存储1,2,3,4,5,遍历数组得到每一个元素,求数组里面所有的数据和
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo5 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int sum = 0;
for(int i = 0; i < arr.length; i++) {
sum = sum + arr[i];
}
System.out.println(sum);//15
}
}
package arraydemo;
public class ArrayDemo7 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0; i < arr.length; i++) {
if(arr[i] % 2 ==0) {
arr[i] /= 2 ;
}else{
arr[i] *= 2 ;
}
System.out.println(arr[i]);//运行结果可以,但是不推荐这样写
}
}
}
注: 上述代码运行结果正确,但是不推荐这样写,一个循环尽量只做一件事情..
[修改后代码]
java复制代码
package arraydemo;
public class ArrayDemo7 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
for(int i = 0; i < arr.length; i++) {
if(arr[i] % 2 ==0) {
arr[i] /= 2 ;
}else{
arr[i] *= 2 ;
}
}
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
(运行结果截图)
数组的动态初始化和常见问题
什么是动态初始化?
**动态初始化:**初始化时只指定数组长度,由系统为数组分配初始值.
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
特点:在创建的时候,由我们自己指定数组的长度,由虚拟机给出默认的初始化值.
范例: int[] arr = new int[3] 数组默认初始化值的规律:
整数类型 :默认初始化值0
小数类型 :默认初始化值 0.0
字符类型 :默认初始化值 '/u0000' 空格
布尔类型 :默认初始化值 false
引用数据类型 :默认初始化值 null
练习
**需求:**定义一个数组,用来存储班级中50个学生的姓名,学生姓名未知,等学生报道之后再进行添加
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo8 {
public static void main(String[] args) {
/*需求:定义一个数组,用来存储班级中50个学生的姓名,
学生姓名未知,等学生报道之后再进行添加*/
String[] arr = new String[50];
arr[0] = "张三";
arr[1] = "李四";
System.out.println(arr[0]);//张三
System.out.println(arr[1]);//李四
System.out.println(arr[2]);//null
int[] arr2 = new int[3];
System.out.println(arr2[0]);//0
System.out.println(arr2[1]);//0
System.out.println(arr2[2]);//0
}
}
(源代码)
数组动态初始化和静态初始化的区别
动态初始化: 手动指定数组长度,由系统给出默认初始值
**使用场景:**只明确元素个数,不确定具体数值,推荐使用动态初始化.
静态初始化: 手动指定数组元素,系统会根据元素个数,计算出数组的长度
**使用场景:**需求中已经明确了要操作的具体数据,直接静态初始化即可.
数组常见问题
索引越异常
当访问了数组中不存在的索引,就会引发索引越界异常.
例如:
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo9 {
public static void main(String[] args) {
//1.定义一个数组
int[] arr = {1,2,3,4,5};
//长度:5
//最小索引:0
//最大索引:4(数组长度 - 1)
//2.打印数组
System.out.println(arr[10]);//索引越界异常
}
}
(运行结果截图)
数组常见操作
求最值
**需求:**已知数组元素为{33,5,22,44,55},请找出数组中最大值并打印在控制台
思路分析:
**注:**max的初始化值一定要是数组中的值
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo10 {
public static void main(String[] args) {
int[] arr = {33,5,22,44,55};
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println(max);//55
}
}
(运行结果截图)
扩展问题:
1.根据求最大值的思路,自己改写一下求最小值
(源代码)
java复制代码
package arraydemo;
public class ArrayDemo11 {
public static void main(String[] args) {
int[] arr = {33,5,22,44,55};
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println(min);//5
}
}