java数组

前言

※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入学习模式。若有错误,请多多指教。

👍 点赞  收藏 📝留言 都是我创作的最大的动力!

⭐思维导图⭐

⭐目录⭐

⭐前言⭐

※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入学习模式。若有错误,请多多指教。

⭐思维导图⭐

⭐目录⭐

1、数组的创建和初始化

1.1数组的创建

1.2数组的初始化

动态初始化 or 静态初始化

基本类型默认值表 

数组越界错误

2、遍历数组

3、数组

3.1初始jvm内存分布

3.2数组是引用类型

 3.3数组拷贝


1、数组的创建和初始化

1.1数组的创建

A[]  数组名 = new A [大小];
//A表示数据类型。
//第一个[]内不能有数字,A[]表示的是数组类型。

1.2数组的初始化

int[] array1 = new int[5];    //默认为0
int[] array2 = new int[]{1,2,3,4,5};
int[] array3 = {1,2,3,4,5};

动态初始化 or 静态初始化

动态初始化:在创建数组时,直接指定数组中元素的个数。

静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

简记:  [  ]里有数字的就是动态初始化。

初始化可分两步完成: 

int[] array;
array = new int[5];

int[]  array1;
array1 = new int[]{1,2,3,4,5};

//注:int[] array2 = {1,2,3,4,5}; 这种格式不能两步完成。

基本类型默认值表 

基本类型默认值
类型默认值
byte 0
short0
int0
long0
float0.0f
double0.0
char/u0000
booleanfalse

数组越界错误

 抛出了 java.lang.ArrayIndexOutOfBoundsException . 表示你的数组越界,编译器报错了。

 2、遍历数组

        如:打印array数组

        int[] array = new int[]{1,2,3,4,5};
        //方法1
        System.out.println("方法一:");
        for (int i = 0; i < 5; i++) {
            System.out.print(array[i]+" ");
        }
        System.out.println();

        //5可以用array.length代替
        //数组名.length表示数组的长度
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
        
        //方法二
        System.out.println("\n方法二:");
        //foreach循环。
        for (int x:array) {
            System.out.print(x+" ");
        }

        //方法三
        System.out.println("\n方法三:");
        // 让数组变成字符串
        System.out.println(Arrays.toString(array));

输出:

1、 foreach比较简洁,如果循环使用到全部元素并且不需要使用下标时可以选择foreach循环

2、打印数组常用方法三(注:使用Arrays要引包  import java.util.Arrays;相当于c语言的头文件

3、数组

3.1初始jvm内存分布

程序计数器 (PC Register): 只是一个很小的空间 , 保存下一条执行的指令的地址
虚拟机栈 (JVM Stack): 与方法调用相关的一些信息, 每个方法在执行时,都会先创建一个栈帧
栈帧中包含 有:局部变量表 操作数栈 动态链接 返回地址 以及其他的一些信息,保存的都是与方法执行时相关的一 些信息。
比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了
本地方法栈 (Native Method Stack): 本地方法栈与虚拟机栈的作用类似 . 只不过 保存的内容是 Native 方法的局 部变量 . 在有些版本的 JVM 实现中 ( 例如 HotSpot), 本地方法栈和虚拟机栈是一起的
(Heap) : JVM 所管理的最大内存区域 . 使用 new 创建的对象都是在堆上保存
( 例如前面的 new int[]{1, 2, 3} )
堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销
方法区 (Method Area) : 用于 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数 . 方法编译出的的字节码就是保存在这个区域

3.2数组是引用类型

 

 即:在栈区array内只不过是存放的在堆区创建数组的地址,通过该地址引用变量来访问数组内容。

int[] array = null;
//表示空引用,即不指向任何对象。

数组的功能

1、保存数据

2、作为函数的参数

3、作为函数的返回值。

 3.3数组拷贝

        int[]array = {1,2,3,4,5};
        int[] copy = Arrays.copyOf(array,array.length);
        System.out.println(Arrays.toString(array));
        System.out.println("=================");
        System.out.println(Arrays.toString(copy));

输出

 copyOf出来的数组和原数组没有关系,即修改array中的数据copy中的数据不变。

copyOf第一个参数是被拷贝的数组名,第二个参数是要拷贝长度

返回值是新建数组的地址,用一个数组接收。

copyOf还可以给数组扩容 

        int[]array = {1,2,3,4,5};
        array = Arrays.copyOf(array,array.length*2);
        System.out.println(Arrays.toString(array));

输出

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

同学〖森〗

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值