数组快速入门

目录

1.什么是数组?

2.数组的使用

使用方式1-动态初始化

数组的定义

使用方式2-动态初始化

1.先声明数组

2.创建数组

使用方式3-静态初始化

初始化数组

3.数组的赋值机制

值传递与引用传递的区别?

4.数组的拷贝


1.什么是数组?

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

即:数组就是一组数据

2.数组的使用

使用方式1-动态初始化

数组的定义

数据类型 数组名[] = new 数据类型[大小]

/**
 *循环输入5个成绩,保存到double数组,并输出
 *
 */
//1.创建了一个double数组,大小为5
int source[] = new double[5];
//2.循环输入
//source.length 表示数组的大小/长度
Scanner myscanner = new Scanner(System.in);
for(int i = 0;i<sources.length;i++){
    System.out.println("请输入第"+(i+1)+"个元素的值");
    scores[i] = myScanner.nextDouble();
}
//输出,遍历数组
System.out.println("==数组的元素/值的情况如下:==")
for(int i = 0;i <scores.length;i++){
    System.out.println("第"+(i+1)+"个元素的值"+scores[i]);
}

使用方式2-动态初始化

1.先声明数组

语法:数据类型 数组名[];也可以 数据类型[] 数组名;

int a[];或者int [] a;

2.创建数组

创建语法:数组名 = new 数据类型[大小];

a = new int[10];

/**
 *循环输入5个成绩,保存到double数组,并输出
 *
 */
//1.创建了一个double数组,大小为5
int scores[]; //声明数组,这时scores是null
scores = new double[5]; //分配内存空间,可以存放数据
//2.循环输入
//source.length 表示数组的大小/长度
Scanner myscanner = new Scanner(System.in);
for(int i = 0;i<sources.length;i++){
    System.out.println("请输入第"+(i+1)+"个元素的值");
    scores[i] = myScanner.nextDouble();
}
//输出,遍历数组
System.out.println("==数组的元素/值的情况如下:==")
for(int i = 0;i <scores.length;i++){
    System.out.println("第"+(i+1)+"个元素的值"+scores[i]);
}

使用方式3-静态初始化

初始化数组

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

int[] a ={2,3,4,5,6,7,8}

public class Array02 {
    public static void main(String[] args){
        double[] hens = {3,5,1,3,4,2};
        for(double hen : hens){
            System.out.println(hen);
        }
    }
}

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

//1.数组是多个相同类型数据的组合,实现对这些数据的统一管理 
int[] arr1 = {1,2,3,4,60,1.1};//double=>int;由于不是自动类型转换;错

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

//2.数组中的元素可以是任何数据类型,包括基本数据类型和引用类型,但是不能混用 
String[] arr3 = {"北京","烤鸭","好吃"};

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

//3.数组创建后,如果没有赋值,有默认值 
//int 0、short 0、byte 0、long 0
//float 0.0、double 0.0、char \u0000、boolean false、String null 
short[] arr4 = new short[3];

4.数组的下标必须是0开始

5.数组下标必须在指定的范围内使用,否则报:下标越界异常

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

3.数组的赋值机制

数组在默认情况下是引用类型,赋的值是地址

//基本数据类型赋值,赋值方式为值(拷贝)
//n2的变化,不影响到n1的值
int n1 = 10;
int n2 = n1;
n2 = 80;
//数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用传递
//是一个地址,arr2变化会影响到arr1
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;
arr2[0] = 10;
System.out.println(arr1[0]);

值传递与引用传递的区别?

值传递:

//n2的变化,不影响到n1的值 
int n1 = 10; 
int n2 = n1; 
n2 = 80;

//是一个地址,arr2变化会影响到arr1 
int[] arr1 = {1, 2, 3}; 
int[] arr2 = arr1; 
arr2[0] = 10;

4.数组的拷贝

实现数组的拷贝(内容的复制)

将int[] arr1 = {10,20,30};拷贝到arr2数组,要求数据空间是独立的

//将int[] arr1 = {10,20,30};拷贝到arr2数组
// 要求数据空间是独立的
int arr[] = {10,20,30};
//创建一个新的数组arr2,开辟一个新的数据空间
//大小 arr1.length;
int[] arr2 =new int[arr.length];
//遍历arr1,把每一个元素拷贝到对应的位置
for(int i = 0; i<arr.length;i++){
    arr2[i] = arr[i];
    System.out.println(arr2[i]);
}

解析:

int[] arr2 =new int[arr.length];在堆中重新创建了一个空间,这时使用的空间与arr不一样,也就是使它们的空间内存独立了如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TC_FANCY

你的支持是我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值