一、数组
* (一)概念:是一种容器,可以存放多个数组值
* (二)数组的特点:
* 1.数组是一种引用数组类型
* 2.数组当中的多个数据,类型必须统一
* 3.数组的长度在程序运行期间不可改变
* (三)数组的初始化,在内存中创建一个数组,并且向其中赋予一些默认值。
* 二种常见的初始化方式
* 1.动态初始化(指定长度)
* 2.静态初始化(指定内容)
*
* 3.动态初始化数据的格式
* 数据类型[] 数组名称 =new 数组类型[数组长度];
* 4.解析含义:
* (1)左侧数据类型,也就是数组当中保存的数据,全部是同意的什么类型
* (2)左侧的中括号,代表我是一个数组
* (3)左侧数组名称,给数组起一个名字
* (4)右侧的new,代表创建数组的动作
* (5)右侧的数据类型,必须和左边的数据类型保持一致
* (6)右侧中的括号的长度 也就是数组当中 到底可以存放多少个数据,是一个int类型的数组
*
* 动态初始化:(指定长度)在创建数组的时候 直接吃定数组当中的数组元素个数
* 静态初始化:(指定内容)在创建数组的时候,不指定数据的个数,而是直接将数组的内容进行指定。
*
*
* 静态初始化的基本格式
* 数据类型[] 数组名称=new 数组类型[]{元素1,元素2,.......}
* 静态初始化虽然没有定义长度 但是根据大括号里面元素的二聚体内容,可以自动推算出长度
*
* //创建一个动态数组 数组长度为10的int类型数组
int[] arrayA = new int[10];
//创建一个动态double类型的数组数组长度为10
double[] doubleA=new double[10];
//静态数组
int[] arrayB=new int[]{5,10,15};
//创建一个数组,用来存放字符串
String[] stringB=new String[]{"hello","java","AB"};
* 使用静态初始化数组的时候格式可以省略一下
* 省略格式:数组类型[] 数组名称 ={数组元素};
* 注意事项:
* 1.静态初始化没有定义长度 但是能推算出长度
* 2.静态初始化可以拆分出二个步骤 动态初始化也可以(省略格式不允许)
*
* 访问数组元素的格式:数组名称[索引值]
* 【注意:索引值从0开始一直到数组长度-1为至】
* 静态初始化也有默认值 不过瞬间把大括号中的数值赋值
* 二个常见的问题:
* 1.如果访问数组元素的时候 索引编号不存在 那么将会发生数组索引越界异常
* ArrayIndexOutOfBoundsException
* 2.空指针异常
* 所有引用类型变量,都可以赋值一个为null值,但是代表什么也没有
* 数组必须其进行new初始化才能进行其中的元素。如果只是赋值null没有进行new创建
* 那么将会发生空指针异常NullPointerException
* 原因:忘了new
* 解决:补上new
* 如何获取数组长度 格式:数组名称.length 长度无法改变一旦创建成功
* 数组的遍历:fori for each
* 求出数组中的最值
* 数组元素的反转:[1,2,3,4] [4,3,2,1]
* (1)实质上指的是对称位置上的元素交换
* (2)现在表示对称位置的二个索引 int min=0; int max=array.length-1;
* (3)如何交换二个变量的值 int temp=a; a=b; b=temp;
* (4)什么时候停止交换 min==max
* 当min>max 停止交换
* 什么时候应该交换min<max
* 数组可以作为方法的参数数组存的地址
* 一个方法有多个参数可以 但是只能有一个返回值
* 如果希望一个方法中产生多个结果数据进行返回 怎么办???
* 解决方案:使用一个数组作为返回值类型即可
* * */
public class TestArray {
public static void main(String[] args) {
//静态初始化格式的省略格式
int[] array = {5,10, 20, 30,45};
System.out.println(array);//[I@49e4cb85
//直接赋值
System.out.println("数组array的第一个值:"+array[0]);//数组array的第一个值:10
//求最大值
int max=array[0];
for (int i = 0; i < array.length-1; i++) {
if(array[i]>max){
max=array[i];
}else{
max=max;
}
}
System.out.println("array数组中的最大值是:"+max);
//array数组元素的反转
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
System.out.println("==================");
/*初始化语句:int min=0,max=array.length-1;
* 条件判断:min<max;
* 步进表达式:min++,max--
* 循环体:用第三个变量倒手
* */
for (int min1 = 0, max1=array.length-1;min1<max; min1++,max1--) {
int temp=array[min1];
array[min1]=array[max1];
array[max1]=temp;
}
for (int i = 0; i <array.length-1 ; i++) {
System.out.println(array[i]);
}
System.out.println("+++++++++++++++++++++++++++++");
//可以将数组元素的某个元素交给变量
int num=array[1];
System.out.println(num);//20
//动态初始化一个数组
int[] arraya=new int[3];
System.out.println(arraya[0]);//整数默认为0
//将数据123赋值给arraya中的1号元素
arraya[1]=123;
for (int i = 0; i <arraya.length ; i++) {
System.out.println(arraya[i]);
}
System.out.println(arraya[0]);
System.out.println("数组长度是:"+arraya.length);
}
}