Java数组

今天我们来看下有关于数组的内容
首先我们需要知道什么是数组,数组就是相同数据类型的元素集合, 那么在Java中,我们都怎么表示呢

int[] array;//这就是简单的数组定义.int [] 表示为整形数组, array表示为变量

在java中,有两种的存储方式,一种是静态存储,一种是动态存储,如何表示,我们往下看,

第一种
int [] array={1,2,3,4}
int[] array=new int[]{1,2,3,4}
//以上两种都表示为静态存储,不过我们经常使用的还是第一个.
int [] array=new int[10];
//这种就是动态存储,一开始并不立马赋值,此时数组元素均默认为0

那么当我们想遍历数组时,都有哪些方式呢?

//1.最容易理解的是利用for循环
int [] array={1,2,3,4};
for(int i=0;i<array.length;i++){
  System.out.println(array[i];
}// 这种方式简单易懂
//2.for-each 
for(int x: array){
    System.out.println(x);
}//写起来非常快捷
//3.通过Arrays类中的方法
System.out.Println(Arrays.toString(array));//把参数的数组转化成字符串进行输出

那么到这个地方,我们就需要知道以下三个技能了
1.怎么定义数组
2.怎么使用数组
3.如何打印数组
大家还需要好好把握体会~
OK,接下来我们就来探究下数组底层的东西,首先我们来看张图
在这里插入图片描述
我们目前所需要掌握的就是Java虚拟机栈和对,这两个部分,剩余的我们之后再详细介绍
1.Java虚拟机栈
一般用来存放局部变量

public static void method(){
     int a=5;//此时a就存放在Java虚拟机栈中
}

2.堆
只要是对象都在堆上分配内存.
3.程序计数器
空间很小,主要是存放下一条指令
4.方法区
存放静态的成员变量
5.Java本地方法栈
运行一些由c/c++代码编写的程序[JVM其实是一个由c/c++代码编写的软件]
各区域使用情况如下所示
在这里插入图片描述

划分内存的好处是:方便管理
我们再接着看引用这个知识点
int [] array={1,2,3,4,5};我们形象的用图来表示下
在这里插入图片描述
我们看到array 这个引用,引用(指向)了一个数组对象.再接着看

int [] array={1,2,3,4};
int [] array2=array;//这个array2引用,指向了array所指向的对象,
//如下图所示

在这里插入图片描述
我们说,当堆里的对象没有人使用时,JVM垃圾回收器就是自动回收.那我们我们还有几个误区需要说明一下
误区一:
引用能指向引用吗?
答案是错,引用只能是指向对象,

array1=array2;//代表arr1 这个引用 引用了arr2所引用的对象

误区二:
一个引用能指向多个对象吗?
答:不能,一个引用只能同时指向1个对象。

误区三:
引用一定在栈上吗?
答:不一定,我们目前只接触到了局部变量,还没有接触到成员变量。

误区四:
引用赋值NULL代表啥?
代表整个引用不指向任何对象

接下来,我们在说下数据的拷贝有哪几种?
1.首先是我们自己实现数据拷贝

public static int [](int [] array){
      int [] copy=new int[array.length];
      for(int i=0;i<array.length;i++){
           copy[i]=array[i];
      }
      return copy;
 }

2.借助Arrays类中的方法(这个最为常用的)

int [] copy=Arrays.copyOf(array,array.length);

3.System.arraycopy(array,0,copy,0,array.length);各项参数如下
在这里插入图片描述
第一个参数是原数组参数,第二个参数是原数组下标;第三个参数是目的数组参数,第四个参数是目的数组下标;第五个参数是长度
4.int [] copy =array.clone();
在这里插入图片描述
在这里我们可以很清楚的可以看到我们对象产生了1个副本,然后将这个副本给了copy 这个引用,所以copy和array的地址不一样。
好了,我们的数组就写到这里,后期在进行详细的补充,坚持很难,但也很😎~ see you

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值