Java数组

数组介绍

数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。

即:数组就是一组数据。

 //1.double[]表示 double类型的数组,数组名 hens
 //2.{3, 5, 1, 3.4, 2, 50}表示数组的值、元素,依次表示数组的第几个元素   
 //double[] hens = {3, 5, 1, 3.4, 2, 50};
 //遍历数组得到的数组所有元素的和,使用for
 //我们可以通过 hens[下标] 来访问数组的元素
 // 下标是从0开始编号的 比如第一个元素就是 hens[0]
 //数组名.length 表示有多少个元素
 ​
 public class Test {
     public static void main(String[] args) {
         double[] hens = {3, 5, 1 ,3.4 ,2, 50 ,66.6};
         double totalWeight = 0;
         for (int i = 0; i < hens.length; i++){
             totalWeight += hens[i];
         }
         System.out.println("总体重=" + totalWeight + "平均体重=" + (totalWeight / hens.length));
     }
 }
 ​

使用方式1-动态初始化

 ​
 //循环输入5个成绩,保存到double数组,并输出
 import java.util.Scanner;
 public class Test {
     public static void main(String[] args) {
         double scores[] = new double[5];        //创建一个数组 大小为5
         Scanner input = new Scanner(System.in);
         for (int i = 0; i < scores.length ; i++){                   //循环输入   scores.length表示数组大小
             System.out.println("请输入第"+ (i + 1) +"个元素的值");
             scores[i] = input.nextDouble();
         }
         for (int i = 0; i < scores.length ; i++) {                   //循环输出
             System.out.println("第" + (i + 1) + "个元素的值=" + scores[i]);
         }
     }
 }
 ​

使用方式2-动态初始化

先声明 后分配

 ​
 //循环输入5个成绩,保存到double数组,并输出
 import java.util.Scanner;
 public class Test {
     public static void main(String[] args) {
         double scores[]  ;     //声明数组
         scores = new double[5];  //分配内存空间,存放数据
         Scanner input = new Scanner(System.in);
         for (int i = 0; i < scores.length ; i++){                   //循环输入   scores.length表示数组大小
             System.out.println("请输入第"+ (i + 1) +"个元素的值");
             scores[i] = input.nextDouble();
         }
         for (int i = 0; i < scores.length ; i++) {                   //循环输出
             System.out.println("第" + (i + 1) + "个元素的值=" + scores[i]);
         }
     }
 }
 ​

使用方式3-静态初始化

语法: 数组类型 数组名[] = {元素值.............}

int a[] = {2 ,5 ,8 ,9};

相当于:

int a[] = new int[4];

a[0] = 2;

a[1] =5 ;

a[2] = 8;

a[3] = 9;

数组使用注意事项

  1. 数组是多个相同类型数据的组合,实现对这些数据的统一管理

  2. 数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。

  3. 数组创建后,如果没有赋值,有默认值

int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null

  1. 使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值 3 使用数组

  2. 数组的下标是从 0 开始的

  3. 数组下标必须在指定范围内使用,否则报:下标越界异常,比如 int [] arr=new int[5]; 则有效下标为 arr[4] arr[3] arr[2] arr[1] arr[0]

  4. 数组属于引用类型,数组型数据是对象

数组赋值机制

 ​
 public class Test {
     public static void main(String[] args) {
         int n1 = 15;        //基本数据类型赋值,赋值方式为值拷贝
         int n2 = n1;
         n2 = 50;
         System.out.println(n1);
         System.out.println(n2);
         //数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值
         int[] arr1 = {1 , 2 , 3};
         int[] arr2 = arr1;
         arr2[0] = 10;
         System.out.println("==================");
         System.out.println(arr1[0]);
     }
 }
 ​

 ​
 public class Test {
     public static void main(String[] args) {
         int arr1[] = {1 , 2 , 30};
         int arr2[] = new int[arr1.length];       //创建一个新的数组arr2,开辟新的数据空间
         for (int i = 0 ;i < arr1.length ; i++){
             arr2[i] = arr1[i];                     //拷贝元素的值
         }
         
         
     }
 }
 ​

 

数组反转

 //把数组的元素内容反转   方法一
 public class Test {
     public static void main(String[] args) {
         int arr[] = {1 , 2 , 3 , 4 , 5 , 6};
         int temp = 0;
         for (int i = 0; i < arr.length / 2 ; i++){
             temp = arr[i];
             arr[i] = arr[arr.length - 1 - i];
             arr[arr.length - 1 - i] = temp;
         }
         for (int i =0 ; i < 6 ;i++){
             System.out.print(arr[i] + " ");  //输出为  6 5 4 3 2 1
         }
     }
 }
 ​
 //方法二
 public class Test {
     public static void main(String[] args) {
         int arr1[] = {1 , 2 , 3 ,4 ,5 ,6 };
         int arr2[] = new int[arr1.length];
         for (int i = arr1.length - 1 ; i >= 0 ; i--){
            arr2[arr1.length - 1 - i] = arr1[i];
         }
         arr1 = arr2;
         for (int i = 0; i < arr1.length ; i++){
             System.out.print(arr1[i] + " ");
         }
     }
 }
 ​

数组添加

 /*
 实现动态的给数组添加元素效果,实现对数组扩容。原始数组使用静态分配 int[] arr = {1,2,3} 2) 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
 */
 public class Test {
     public static void main(String[] args) {
         int arr[] = {1 , 2 , 3};
         int arr1[] = new int[arr.length + 1];
         for (int i = 0 ; i < arr.length ; i++){
             arr1[i] = arr[i];
         }
         arr1[arr1.length - 1] = 4;
         arr = arr1;
         for (int i = 0 ; i < arr.length ; i++){
             System.out.print(arr[i] + " ");     //1 2 3 4
         }
     }
 }
 ​

数组缩减

 ​
 import java.util.Scanner;
 public class Test {
     public static void main(String[] args) {
         Scanner input = new Scanner(System.in);
         int arr[] = {1 , 2 , 3 , 4 , 5};
         do {
 ​
             int arr1[] = new int[arr.length - 1];
             for (int i = 0; i < arr.length - 1; i++) {
                 arr1[i] = arr[i];
             }
             arr = arr1;
             System.out.println("===数组缩减情况===");
             for (int i = 0; i < arr.length; i++) {
                 System.out.print(arr[i] + "    ");
             }
             System.out.println("是否继续缩减 Y/N");
             char key = input.next().charAt(0);
             if (key == 'N' ){
                 System.out.println("缩减结束");
                 break;
             }else if (arr.length == 1){
                 System.out.println("无法继续缩减");
                 break;
             }
 ​
         }while(true);
     }
 }
 ​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值