数组初始化及访问获取元素

  1. package com.besttest.class1;
  2. /*
  3. *数组的概念:是一种容器,可以同时存放多个数据值
  4. *数组的特点:
  5. 1.数组是一种引用数据类型
  6. 2.数组当中的多个数据,类型必须统一
  7. 3.数组长度在程序运行期间不可改变
  8. *数组的初始化,在内存中创建一个数组,并且向其中赋予一些默认值
  9. 两种常见的初始化方式:
  10. 1.动态初始化(指定长度)
  11. 2.静态初始化(指定内容)
  12. 动态初始化数组的格式:
  13. 数据类型[] 数组名称 = new 数组名称[数组长度]
  14. 解析含义:
  15. 左侧数据类型,也就是数组中保存的数据,全部都是统一的类型
  16. 左侧的中括号,代表我是数组
  17. 左侧的数组名称,给数组取一个名字
  18. 右侧的new,代表创建数组的动作
  19. 右侧的数据类型,必须和左边的数据类型保持一致
  20. 右侧中括号的长度,也就是数组当中,到底可以保存多少个数据,是一个int数字
  21. 静态初始化数组的格式:
  22. 数据类型[] 数组名称 = new 数组名称[]{元素1,元素2,...}
  23. 【注意事项】:
  24. 1.虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,可以直接推算出长度
  25. 2.静态初始化标准格式可以拆分成两个步骤
  26. 3.动态初始化可以拆分成两个步骤
  27. 4.静态初始化一旦使用省略格式就不能拆分成两个步骤
  28. 静态初始化数组的省略格式:
  29. 数据类型[] 数组名称 = {元素1,元素2,...}
  30. * 访问数组元素进行获取
  31. 直接打印数据名称,得到的时候数组对应的内存地址哈希值 二进制:0,1;十进制:0123456789;十六进制:0123456789abcdef
  32. 访问数组元素的格式:数组名称[索引值]
  33. 【注意】:索引从0开始,直到“数组长度”-1为止
  34. * 访问数组元素进行赋值
  35. 访问动态初始化数组的时候,其中的元素将会主动拥有一个默认值。规则如下:
  36. 如果是整数类型,默认为0;
  37. 如果是浮点型,默认为0.0;
  38. 如果是字符类型,默认为”\ue0000“;
  39. 如果是布尔型,默认为false;
  40. 如果是引用类型,默认为null;
  41. 【注意事项】:静态初始化其实也有默认值,只不过系统马上将默认值替换为了当中的具体数值
  42. */
  43. import java.util.Arrays;
  44. public class ArrayDemo {
  45. public static void main(String[] args) {
  46. //1、数组的声明
  47. int[] arr;
  48. //2、数组的初始化
  49. int[] arr1={1,2,3};
  50. //直接打印数组名称 ----[I@1b6d3586 (@后的是16进制)
  51. System.out.println(arr1);
  52. //创建一个空数组 长度为4 默认为0 0 0 0
  53. int[] arr2=new int[4];
  54. //3、数组的访问
  55. int x=arr1[2]; //取出下标为2的元素
  56. //4、长度
  57. int[] arr3={1,3,2,5};
  58. int count=arr3.length;
  59. System.out.println(count);
  60. //5、元素的初始化操作
  61. int[] arr4 =new int[5];
  62. for(int i=0;i<arr4.length;i++){
  63. arr4[i]=i+1;
  64. }
  65. //6、打印数组 import java.util.Arrays;
  66. System.out.println(Arrays.toString(arr4));
  67. }
  68. }

数组长度在程序运行期间不可改变

  1. package com.besttest.class1;
  2. public class Demo01Array {
  3. public static void main(String[] args) {
  4. int [] arr1 = new int[3];
  5. System.out.println(arr1.length); //3
  6. arr1=new int[5];
  7. System.out.println(arr1.length); //5
  8. }
  9. }

image.png

求数组中的最值

最大值:

  1. public class Demo01Array {
  2. public static void main(String[] args) {
  3. int[] arr1={1,2,3,32,34,55,1,2};
  4. int max=arr1[0];
  5. for (int i=1;i<arr1.length;i++){
  6. if (arr1[i]>max){
  7. max=arr1[i];
  8. }
  9. }
  10. //最后输出的最大值
  11. System.out.println( max);
  12. }
  13. }

最小值:

  1. public class Demo01Array {
  2. public static void main(String[] args) {
  3. int[] arr1={12,2,3,32,34,55,10,2};
  4. int min=arr1[0];
  5. for (int i=1;i<arr1.length;i++){
  6. if (arr1[i]<min){
  7. min=arr1[i];
  8. }
  9. }
  10. //最后输出的最大值
  11. System.out.println( min);
  12. }
  13. }

数组元素反转

image.png

  1. package com.besttest.class1;
  2. import java.util.Arrays;
  3. /*
  4. 数组[12,23,34,54,6]
  5. 翻转之后[6,54,34,23,12]
  6. 要求只能有一个数组
  7. 利用第三个值交换
  8. */
  9. public class Demo01Array {
  10. public static void main(String[] args) {
  11. int[] arr1={12,23,34,54,6};
  12. //遍历数组本来的样子
  13. for (int i=1;i<arr1.length;i++){
  14. //最后输出的最大值
  15. System.out.println(arr1[i]);
  16. }
  17. /*
  18. 初始化语句:int min=0,max=arr1.length
  19. 条件判断:min<max
  20. 循环体:用三个变量倒手
  21. */
  22. for (int min=0,max=arr1.length-1;min<max;max--,min++){
  23. int temp=arr1[min];
  24. arr1[min]=arr1[max];
  25. arr1[max]=temp;
  26. }
  27. System.out.println(Arrays.toString(arr1));
  28. }
  29. }

数组作为方法参数_传递

  1. package com.besttest.class1;
  2. /*
  3. 数组可以作为方法的参数
  4. 当地调用方法的时候,向方法的小括号进行传参,传递进去的其实就是数组的地址值
  5. */
  6. public class DemoArrayParm {
  7. public static void main(String[] args) {
  8. int[] arr1={1,2,3,4,5};
  9. System.out.println(arr1); //地址值
  10. printarray(arr1); //传递进去的就是数组当中保存的地址
  11. }
  12. /*
  13. 三要素:
  14. 返回类型:只是进行打印而已,不需要进行计算,也可以结果,用void
  15. 方法名称:printarray
  16. 参数列表:必须给我数组,我才能打印其中的元素,int[] array
  17. */
  18. public static void printarray(int[] array){
  19. System.out.println(array); //地址值
  20. for (int i=0;i< array.length;i++){
  21. System.out.println(array[i]);
  22. }
  23. }
  24. }

image.png

数组作为方法参数_返回

  1. package com.besttest.class1;
  2. /*
  3. 一个方法可以有0、1、多个参数,但只能有0或者1个返回值,不能有多个返回值
  4. 如果期望一个方法当中产生多个结果数据进行返回,怎么办?----解决方法:使用一个数组作为返回类型即可
  5. 任何数据类型都能作为方法的参数类型或者返回类型
  6. 数组作为方法的参数,传递进去的其实是数组的地址值;
  7. 数组违反方法的返回值,返回的其实也是数组的地址值。
  8. */
  9. public class Demo01ArrayReturn {
  10. public static void main(String[] args) {
  11. int[] ar=caculate(5,8,10);
  12. System.out.println("main方法返回的数组是:"+ar); //地址值
  13. System.out.println("总和:"+ar[0]);
  14. System.out.println("平均值:"+ar[1]);
  15. }
  16. public static int[] caculate(int a, int b,int c){
  17. int sum=a+b+c;
  18. int avg=sum/3;
  19. //
  20. int[] arr1= new int[2];
  21. arr1[0]=sum;
  22. arr1[1]=avg;
  23. System.out.println("将要返回的数组值是:"+arr1);//地址值
  24. return arr1;
  25. }
  26. }