Java数组的基本用法 二维数组使用

1.数组基本用法

1.1创建数组
有以下三种方法(此处用Int类型示例):

//动态初始化
int[] arr = new int[] {1,2,3,4,5};
int[] arr = new int[5];
//静态初始化
int[] arr = {1,2,3,4,5};

注意事项:静态初始化的时候,数组元素个数和初始化数据的格式是一致的。
1.2数组的使用

//获取数组长度
System.out.println("length:"+arr.length);
//访问数组元素
System.out.println(arr[0]);
//获取数组地址(哈希码)
System.out.println(arr);

注意事项:
下标访问操作不能超出有效范围[0,length-1],否则出现下标越界异常。“ArrayIndexOutOfBoundsException”即下标越界异常。
遍历数组(两种):
①使用for循环
②使用for-each,for-each代码如下:

int[] arr = {1,2,3};
for(int x:arr){
System.out.println(x);
}

③将数组快速打印出来:

System.out.println(Arrays.toString(arr);

上述①②两种方法区别:for-each不能使用下标。

2.数组作为方法的参数

2.1引用类型
①参数传内置类型``

int num = 0;
func(num);

②参数传数组类型

int[] arr = {1,2,3};
func(arr);

注意: 参数传内置类型时,修改形参的值,不影响实参num。而参数传数组内容时,在函数内部修改数组内容,函数外部也发生改变。
JVM内存区域划分
主要划分为以下几大部分:
①程序计数器:只是一个很小的空间,保存下一条执行的指令的地址。
②虚拟机栈:重点存储局部变量表,例int [ ] arr这样的存储地址的引用。
③本地方法栈:与虚拟机栈类似,只不过保存的内容是Native方法的局部变量。
④堆:JVM所管理的最大内存区域,使用new创建的对象都是在堆上保存。
⑤方法区:用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。方法编译出的字节码就是保存在这个区域。
⑥运行时常量池:是方法区的一部分,存放字面量与符号引用。
重点理解虚拟机栈和堆,如下图:
在这里插入图片描述
即:局部变量和引用保存在栈上,new出的对象保存在堆上。

3.数组的拷贝

  • 用for循环
  • arraycopy方法 使用时System.arraycopy() 无返回
  • copyOf方法 使用时int[] newarr = Array.copyOf() 有返回
    以上②③两者区别:1)返回值 2)调用System Array不同 3)速度问题:System.arraycopy()更快
  • array.clone即数组名.clone 数组名为你要拷贝的数组名
    以上四种方式:
    对于数组中是简单类型就是深拷贝 数组中是引用类型就是浅拷贝
    浅拷贝:把1拷贝到2中,改变2则1也改变 即修改源数组会影响到新数组
    深拷贝: 把1拷贝到2中,改变2则1不改变 即修改源数组不会影响到新数组

4.二维数组

4.1基本用法(int类型为例)

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

在这里插入图片描述
二维数组本质上:就是一维数组,只不过每个元素又是一个一维数组。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值