java基础知识3:数组的定义与使用

  1. 数组指的是一组相关类型的变量集合,并且这些变量可以按照统一的方式进行操作。
  2. 可变参数编程:int… +变量 变量可以是数组
  3. 数组动态初始化(声明并开辟数组): 数据类型[ ] 数组名称 = new 数据类型 [长度];
  4. 数组本身是一个有序的集合操作,所以对于数组的内容操作往往采用循环的模式完成。(数组是一个有限的集合,采用for循环)
  5. 在java中有一种动态取得数组长度的方法:数组名称.length;
  6. ArraryIndexOutBounds 数组越界 运行异常
  7. 数组的存储方式为: 数组名在stack(栈)上存储数组第一个元素的地址,数组元素存储在heap(堆)上
  8. Arrays:操作数组的工具类 要在最上方导入包 import java.util.Arrays
  9. 打印数组的方式:
for(i=0;i<array.length;i++) { 
	 System.out.println(array[i]);
}
for(int i:array) {       //不能获取到数组的下标 
	System.out.println(i);  
} 
Arrays.deepToString(array);
  1. 数组属于引用类型,因此在使用前一定要开辟空间(实例化),否则会产生 NullPoninterException
  2. 引用传递空间:同一块堆内存空间可以被不同的栈内存所指向。浅拷贝的基础———通过改变一个引用的值时,另一个引用的值也会改变
  3. 数组静态初始化:数组在定义的同时可以设置内容
    数组动态初始化:数组先开辟内存空间,而后再使用索引进行内容的设置
  4. 数组静态初始化语句:
    1)简化格式:数据类型 [ ] 数组名称 = {值,值, …}
    2)完整格式:数据类型 [ ] 数组名称 = new 数据类型 [ ] {值,值,…}
  5. 二维数组初始化:
    1)动态初始化:数据类型 [ ] [ ] 对象数组 = new 数据类型 [行个数][列个数] ; 2)静态初始化:数据类型 [ ] [ ] 对象数组 = new 数据类型 [ ][ ] { {值,值,…} , {值,值,…} , …};
  6. 二维数组的输出一定也要使用双重循环:
	for (int x = 0; x < data.length ; x++) {
		for(int y = 0; y < data[x].length; y++) {
		}
	}
  1. java类库中数组排序操作如:java.util.Arrays.sort(arrayname);
  2. 只要是基本数据类型的数组,sort方法都可以进行排序处理(升序处理)。内部使用双轴快速排序。
  3. 1)浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用
    2)深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”
  4. 数组拷贝的方法:对于基本数据类型,是深拷贝;对于引用类型来说都是浅拷贝。
    1)for循环
    2)clone 克隆谁就 谁.clone 例如 克隆array array2 = array.clone
    3)System.arraycopy(源数组名,源数组拷贝起点,目标数组名,目标数组拷贝起点,拷贝长度)
    4)Arrays.copyOf(源数组名,新数组 长度) 使用之后原有数组名(array)引用的地址与使用之后引用的地址不相同,即产生垃圾内存
  5. System.arraycopy()是最快的拷贝方法,因为它是由native修饰的,由native修饰的方法,底层由C和C++实现。
  6. java类集框架(动态数组)就采用的数组拷贝来动态扩容。
  7. 对象数组的动态初始化:类名称[ ] 对象数组名称 = new 类名称[长度]
class Person {
	private String name;
	private int age;
	public Person(String name,int age) {    //构造函数
		this.name = name;
		this.age = age;
	}
	public void getInfo() {   //方法
		System.out.println("姓名:"+this.name+",年龄:"+this.age);
	}
}
public class Test {
	public static void main(String[] args) {
		Person[] per = new Person[3];    //数组动态初始化,每个元素都是对应数据类型的默认值
		per[0] = new Person("张三",1);
		per[1] = new Person("李四",2);
		per[2] = new Person("王五",3);
		for(int i = 0; i < per.length ; i ++) {
			per[i].getInfo();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值