数组、数组的创建以及默认值、数组的扩容、地址替换、.数组类型的参数、可变长参数*

目录

1 .数组

1.1概念:

1..2数组的声明与赋值

1.3数组的组成

2.数组的创建以及默认值

2.1数组默认值:

2.2数组创建语法

3.数组的扩容***

3.1创建方法

3.2 复制的方式

4地址替换

5.数组类型的参数

5.1 数组类型的参数

5.2数组类型的返回值

6、可变长参数*


1 .数组

1.1概念:

一组连续的存储空间,存储多个相同数据类型的值。
特点:
​
类型相同。
长度固定。

1..2数组的声明与赋值

[]就是数组的标识符
​
引用数据类型默认为 null

1.3数组的组成

数组中的每个数据格被称为“数组元素”。
​
对每个元素进行赋值或取值的操作被称为“元素的访问”。
​
访问元素时,需要使用“下标”(从0开始,依次+1,自动生成)。
​
访问的语法:数组名[下标];  //例如  存:a[0]=10;  取:类型 名字 = a[0];
​
有效下标范围:0 ~ 数组长度-1
​
访问无效下标,会导致数组下标越界

2.数组的创建以及默认值

2.1数组默认值:

整数:0
小数:0.0
字符:\u0000 
布尔:false
其他:null

2.2数组创建语法

先声明、再分配空间:
​
•    数据类型[] 数组名;
​
•   数组名 = new 数据类型[长度];
​
声明并分配空间:
​
•   数据类型[] 数组名 = new 数据类型[长度];
​
声明并赋值(繁):
​
•   数据类型[] 数组名 = new 数据类型[]{value1,value2,value3,...};//可   以先分配
​
声明并赋值(简):
​
•   数据类型[] 数组名 = {value1,value2,value3,...}; (显示初始化,注   意:不可换行)。

3.数组的扩容***

3.1创建方法

创建数组时,必须显示指定长度,并在创建之后不可更改长度。

扩容的思路:

创建大于原数组长度的新数组。

将原数组中的元素依次复制到新数组中。

import java.util.Scanner;
​
public class Demo1 {
    public static void main(String [] args ){
        int [] arr ={1,2,3,4,5};
        System.out.println("请输入一个新数组的长度");
        Scanner sc =new Scanner(System.in);
        int a =sc.nextInt();
        int [] b=array(arr,a);
        for(int i =0;i<a;i++){
            System.out.println(b[i]);
        }
    }
    public static int [] array(int [] arr,int a){
        int [] b=new int [a];
        for(int i=0;i<arr.length;i++){
            if(i==a){
                break;
            }
            b[i]=arr[i];
        }
        return b;
    }
​
}
​

3.2 复制的方式

循环将原数组中所有元素逐一赋值给新数组。

System.arraycopy(原数组,原数组起始,新数组,新数组起始,长度)。

使用System.arraycopy(原数组,原数组起始下标,新数组,新数组的起始存储下标,需要赋值的个数或长度);
            src 旧数组
            srcpos 旧数组的下表位置
            dest新数组
            destpos新数组的起始位置
            数量//不能越界
        System.arraycopy( nums , 0 , newNums , 0 , nums.length);
        

java.util.Arrays.copyOf(原数组, 新长度)。

返回带有原值的新数组。

​
        int[] nums = new int[5];//数组创建之后,长度不可变
        
        nums[0] = 11;
        nums[1] = 22;
        nums[2] = 33;
        nums[3] = 44;
        nums[4] = 55;
        
        
        //.创建新数组、复制元素
        int[] newNums = java.util.Arrays.copyOf(nums , nums.length * 2);//将带有原值的新数组返回给我们
        
        
​

4地址替换

数组作为引用类型之一,其变量中存储的是数组的地址。

完成元素复制后,需将新数组地址,赋值给原变量进行替换。

new出来的都在堆;

 变量都在栈里;

 堆和栈直接用地址连接;

 堆里面不用的就是垃圾;

5.数组类型的参数

5.1 数组类型的参数

方法调用时,将nums中的地址赋值给oneArray,此时二者指向同一个数组。

传递参数时:基本类型传递的是变量中的值;引用类型传递的是变量中的地址。

5.2数组类型的返回值

调用数组类型返回值的方法时,方法执行后,返回的是数组的地址。

6、可变长参数*

概念:可接收多个同类型实参,个数不限,使用方式与数组相同。

语法:数据类型... 形参名 //必须定义在形参列表的最后,且只有一个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值