数组初始化及访问获取元素
package com.besttest.class1;
/*
*数组的概念:是一种容器,可以同时存放多个数据值
*数组的特点:
1.数组是一种引用数据类型
2.数组当中的多个数据,类型必须统一
3.数组长度在程序运行期间不可改变
*数组的初始化,在内存中创建一个数组,并且向其中赋予一些默认值
两种常见的初始化方式:
1.动态初始化(指定长度)
2.静态初始化(指定内容)
动态初始化数组的格式:
数据类型[] 数组名称 = new 数组名称[数组长度]
解析含义:
左侧数据类型,也就是数组中保存的数据,全部都是统一的类型
左侧的中括号,代表我是数组
左侧的数组名称,给数组取一个名字
右侧的new,代表创建数组的动作
右侧的数据类型,必须和左边的数据类型保持一致
右侧中括号的长度,也就是数组当中,到底可以保存多少个数据,是一个int数字
静态初始化数组的格式:
数据类型[] 数组名称 = new 数组名称[]{元素1,元素2,...}
【注意事项】:
1.虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,可以直接推算出长度
2.静态初始化标准格式可以拆分成两个步骤
3.动态初始化可以拆分成两个步骤
4.静态初始化一旦使用省略格式就不能拆分成两个步骤
静态初始化数组的省略格式:
数据类型[] 数组名称 = {元素1,元素2,...}
* 访问数组元素进行获取
直接打印数据名称,得到的时候数组对应的内存地址哈希值 二进制:0,1;十进制:0123456789;十六进制:0123456789abcdef
访问数组元素的格式:数组名称[索引值]
【注意】:索引从0开始,直到“数组长度”-1为止
* 访问数组元素进行赋值
访问动态初始化数组的时候,其中的元素将会主动拥有一个默认值。规则如下:
如果是整数类型,默认为0;
如果是浮点型,默认为0.0;
如果是字符类型,默认为”\ue0000“;
如果是布尔型,默认为false;
如果是引用类型,默认为null;
【注意事项】:静态初始化其实也有默认值,只不过系统马上将默认值替换为了当中的具体数值
*/
import java.util.Arrays;
public class ArrayDemo {
public static void main(String[] args) {
//1、数组的声明
int[] arr;
//2、数组的初始化
int[] arr1={1,2,3};
//直接打印数组名称 ----[I@1b6d3586 (@后的是16进制)
System.out.println(arr1);
//创建一个空数组 长度为4 默认为0 0 0 0
int[] arr2=new int[4];
//3、数组的访问
int x=arr1[2]; //取出下标为2的元素
//4、长度
int[] arr3={1,3,2,5};
int count=arr3.length;
System.out.println(count);
//5、元素的初始化操作
int[] arr4 =new int[5];
for(int i=0;i<arr4.length;i++){
arr4[i]=i+1;
}
//6、打印数组 import java.util.Arrays;
System.out.println(Arrays.toString(arr4));
}
}
数组长度在程序运行期间不可改变
package com.besttest.class1;
public class Demo01Array {
public static void main(String[] args) {
int [] arr1 = new int[3];
System.out.println(arr1.length); //3
arr1=new int[5];
System.out.println(arr1.length); //5
}
}
求数组中的最值
最大值:
public class Demo01Array {
public static void main(String[] args) {
int[] arr1={1,2,3,32,34,55,1,2};
int max=arr1[0];
for (int i=1;i<arr1.length;i++){
if (arr1[i]>max){
max=arr1[i];
}
}
//最后输出的最大值
System.out.println( max);
}
}
最小值:
public class Demo01Array {
public static void main(String[] args) {
int[] arr1={12,2,3,32,34,55,10,2};
int min=arr1[0];
for (int i=1;i<arr1.length;i++){
if (arr1[i]<min){
min=arr1[i];
}
}
//最后输出的最大值
System.out.println( min);
}
}
数组元素反转
package com.besttest.class1;
import java.util.Arrays;
/*
数组[12,23,34,54,6]
翻转之后[6,54,34,23,12]
要求只能有一个数组
利用第三个值交换
*/
public class Demo01Array {
public static void main(String[] args) {
int[] arr1={12,23,34,54,6};
//遍历数组本来的样子
for (int i=1;i<arr1.length;i++){
//最后输出的最大值
System.out.println(arr1[i]);
}
/*
初始化语句:int min=0,max=arr1.length
条件判断:min<max
循环体:用三个变量倒手
*/
for (int min=0,max=arr1.length-1;min<max;max--,min++){
int temp=arr1[min];
arr1[min]=arr1[max];
arr1[max]=temp;
}
System.out.println(Arrays.toString(arr1));
}
}
数组作为方法参数_传递
package com.besttest.class1;
/*
数组可以作为方法的参数
当地调用方法的时候,向方法的小括号进行传参,传递进去的其实就是数组的地址值
*/
public class DemoArrayParm {
public static void main(String[] args) {
int[] arr1={1,2,3,4,5};
System.out.println(arr1); //地址值
printarray(arr1); //传递进去的就是数组当中保存的地址
}
/*
三要素:
返回类型:只是进行打印而已,不需要进行计算,也可以结果,用void
方法名称:printarray
参数列表:必须给我数组,我才能打印其中的元素,int[] array
*/
public static void printarray(int[] array){
System.out.println(array); //地址值
for (int i=0;i< array.length;i++){
System.out.println(array[i]);
}
}
}
数组作为方法参数_返回
package com.besttest.class1;
/*
一个方法可以有0、1、多个参数,但只能有0或者1个返回值,不能有多个返回值
如果期望一个方法当中产生多个结果数据进行返回,怎么办?----解决方法:使用一个数组作为返回类型即可
任何数据类型都能作为方法的参数类型或者返回类型
数组作为方法的参数,传递进去的其实是数组的地址值;
数组违反方法的返回值,返回的其实也是数组的地址值。
*/
public class Demo01ArrayReturn {
public static void main(String[] args) {
int[] ar=caculate(5,8,10);
System.out.println("main方法返回的数组是:"+ar); //地址值
System.out.println("总和:"+ar[0]);
System.out.println("平均值:"+ar[1]);
}
public static int[] caculate(int a, int b,int c){
int sum=a+b+c;
int avg=sum/3;
//
int[] arr1= new int[2];
arr1[0]=sum;
arr1[1]=avg;
System.out.println("将要返回的数组值是:"+arr1);//地址值
return arr1;
}
}