数组的概述和静态初始化
数组指的是一种容器,可以用来存储同种数据类型的多个值。
数组容器在存储数据的时候,需要结合隐式转换考虑。
int(byte,short,int)
double(byte,short,int,long,float,double)
建议:容器的类型,和存储的数据类型保持一致。
数组的定义:
格式一:数据类型[] 数组名 格式二: 数据类型 数组名[]
范例: int[] array 范例: int array[]
数组的初始化
初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
静态初始化
动态初始化
(静)数据类型 [] 数组名 = new 数据类型 [] {元素1,元素2,元素3...}
范例: int[] array = new int[]{11,22,33};
范例: double[] arrary2 = new double[]{11.1,22.2,33.3};
简写格式: 数据类型 [] 数组名 = {元素1,元素2,元素3...}
数组一旦创建完毕,其长度便不再更改
public class Array {
public static void main(String[] args) {
//需求:定义数组存储5个学生的年龄
int[] arr1 = new int[]{11,12,13,14,15};
int[] arr2 = {11,12,13,14,15};
//需求: 定义数组存储3个学生的姓名
String[] arr3 = new String[]{"zhangsan","lisi","wangwu"};
String[] arr4 = {"zhangsan","lisi","wangwu"};
//需求: 定义数组存储4个学生的身高
double[] arr5 = new double[]{1.93,1.75,1.73,1.81};
double[] arr6 = {1.93,1.75,1.73,1.81};
}
}
double[] arr6 = {1.93,1.75,1.73,1.81};
System.out.println(arr6);
[D@6bc7c054 (地址值)
解释一下地址值的格式含义:
[ : 表示当前是一个数组
D : 表示当前数组里面的元素都是double类型的
@ : 表示一个间隔符号。 (固定格式)
6bc7c054 : 才是数组真正的地址值 。(十六进制)
平时我们习惯性的会把这个整体叫做数组的地址值。
数组的访问:
格式: 数组名[索引]; 索引:也叫做下标,角标。
public class Souyin {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int number1 = arr[0];
int number2 = arr[1];
System.out.println(arr[0]+"和"+arr[1]);
}
}
把数据存储到数组当中:
格式: 数组名[索引] = 具体数据/变量;
细节: 这个是覆盖处理,原来的元素就不存在了;
数组的遍历和三道综合练习
遍历:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印!
在Java当中,关于数组的一个长度属性,length
调用方式: 数组名.length
System.out.println(arr.length);
自动的快速生成数组的遍历方式
idea提供的
数组名.fori
eg:遍历数组并求和
定义一个数组,储存1,2,3,4,5
遍历数组得到每一个元素,求数组里面所有的数据和。
public class Bianli {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
System.out.println("遍历结果:");
int sum = 0;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
sum+=arr[i];
}
System.out.println("所求和得到的结果是"+sum);
}
}
eg:统计个数
定义一个数组,存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素,统计数组里面一共有多少个能被3整除的数字
public class Zuoti {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10};
System.out.println("遍历结果为:");
int sum = 0;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
if(arr[i]%3 == 0)
sum++;
}
System.out.println("其中能被3整除的数有"+sum);
}
}
eg:变化数据
定义一个数组,存储1,2,3,4,5,6,7,8,9,10
遍历数组得到每一个元素
要求:
1,如果是奇数,将当前数字扩大两倍。
2,如果是偶数,将当前数字变为二分之一。
public class Darray {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
for (int i = 0; i < arr.length; i++) {
if(arr[i]%2==1){
arr[i] = arr[i]*2;
}else if(arr[i]%2==0){
arr[i] = arr[i]/2;
}else
{
System.out.println("输入有问题!");
}
}
System.out.println("改变后的数组结果为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
数组的动态初始化和常见问题
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
eg:定义一个数组,用来存班级中50个学生的姓名
public class ArrayDemo {
public static void main(String[] args) {
String[] arr = new String[50];
arr[0] = "zhangsan";
arr[1] = "lisi";
System.out.println(arr[0]);//zhangsan
System.out.println(arr[1]);//lisi
System.out.println(arr[2]);//打印出来的是默认初始化值null
int[] arr1 = new int[3];
System.out.println(arr1[0]);//0
System.out.println(arr1[1]);//0
System.out.println(arr1[2]);//0
}
}
数组默认初始化值的规律:
整数类型:默认初始化值 0
小数类型:默认初始化值 0.0
字符类型:默认初始化值 '/u0000' 空格
布尔类型:默认初始化值 false
引用数据类型: 默认初始化类型 null
数组动态初始化和静态初始化的区别
动态初始化:手动指定数组长度,由系统给出默认初始化值
静态初始化: 手动指定数组长度,系统会根据元素个数,计算数组的长度。
数组中常见问题
索引越界异常