【Java】数组下

数组
堆上:实际存储数组对象
变量:数组类型的引用

定义语法
int [ ] a;
int a [ ]-----------非常不建议

赋值
int [ ] a = { 1,2,3,4,5 };
int [ ] a = new int[5];//元素的值是0,因为是取 int 的默认值
int [ ] a = null; //只定义了一个数组类型的引用变量
如果数组中的元素没有初始化,元素的值就是元素类型的默认值
int [ ] a = new int [ ] { 1,2,3,4,5 };

找到数组的线索
变量四种
形参-----------栈------------int [ ] a = null;
局部变量-----栈------------int [ ] a = { 1,2,3,4,5};
属性-----------堆------------int [ ] b = a; //若把b的0改成10,则a的0也变为10
静态属性-----方法区-------b[0] = 10; a[0] = 10;

public static void method(int [] a) {  
      a = new int [] {10,11,12,13,14};
}                                      
public static void main(String[] args) {
      int [] a={1,2,3,4,5};
      method(a);
}
public static void method(int [] a) {
      a[0] = 10;
}

public static void main(String[] args) {
      int [] a = {1,2,3,4,5};
      method(a);
}
 //引用的方法调用也是值传递
 //形参的改变不会影响实参

1、引用类型是个线索,用来找到堆中的真正数据
2、引用类型也是值传递,形参的改变不会影响实参

int [] a = {1,2,3,4,5};
int [] b = a;
b = new int [] {10,11};

java中垃圾回收(Garbage Collection)
Garbage Collector (GC)
垃圾--------没有引用指向的对象就是垃圾 (不保证会立即回收)
没有使用价值;没有引用指向的对象(数组)
int [] a=null;-----------a引用没有指向任何数组

数组的操作:
根据下标访问对应的元素,a[index] ( 0<=index<length)
遇到的异常有--------------NullPointerException/ArrayIndexOutOfBounds
获取数组的长度 a.length
遇到的异常有--------------NullPointerException

理解什么是引用
引用是用来找到实际对象的线索
java内存中有三个区:栈区,堆区,方法区
4种形式变量:

  1. 形参 --------------栈区
  2. 局部变量 --------栈区
  3. 属性 --------------堆区
  4. 静态属性 ------- 方法区

一些操作的理解

int [ ] a = {1,2,3,4,5};
int [ ] b = a; ------------------------- //b 也指向 a 指向的对象数组
int [ ] b = {10,11,12}; ------------- //b 重新指向新的对象数组,不会影响 a 和 a 指向的对象
b[0] = 100; -------------------------- //改变的是 b 指向的数组对象的内容,会影响 a

方法调用过程中(无论是基本数据类型还是引用数据类型)
java 都是值传递,所有形参的改变都不会影响实参

java 中的多维数组存在的元素类型是引用,所以可以有阶梯状的数组

JDK 支持的一些数组操作
java.util.Arrays 包
先导入才能使用
import java.util.Arrays;
java.long.System 包
System .arraycopy(源数组引用,源下标,目标数组引用,目标下标,长度);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值