JAVA 学习笔记—— 数组声明与使用

简单记录下JAVA数组定义与初始化的方法,跟C++还是有很大区别的。

 

下面是一维数组的定义方法:

public static void main(String[] args) {
		int [] ids;//声明
		//1.1静态初始化
		ids = new int[]{1,2,3,4};
    	int arr[] =  {1,2,3,4};
		//1.2动态初始化
		String[] names = new String[5];
		names[0] = "张三";
		names[1] = "李四";
		names[2] = "王五";
		//调用数组长度
		for(int i = 0;i < names.length;i++)
		{
			if(names[i] == null)break;
			System.out.println(names[i]);
		}
	}

一般来说 标准定义为:

int[]  arr;

但是你也可以写成:

int arr[];

还有这里的数组与C++有很大区别,这里数组就是一个类,所以你创建数组时只是创建了一个数组变量,它里面还没东西,必须声明数组长度即:

arr = new int [107];//也就是说数组长度是不可变的

注意:如下代码!

int[] arr = new int[]{1,3,4,5}
int[] arr1 ;
arr1 = arr;
arr1[1] = 100;

此时的arr[1]就等于100了。

因为JAVA里的数组变量是一个指针(一般局部变量在栈里),然后指向堆里的一块连续的空间。所以改变arr1指向空间的值,就相当于改变arr指向空间的值(因为他们指向的位置相同!!)

所以如果你只定义了数组变量,是不能像C++那样直接引用的。

比如:

int[] arr;

arr[0] = 1;//这里就会报错,The local variable arr may not have been initialized,变量未初始化

因为你的数组变量指针为空,必须new一块空间给这个数组,使得其数组变量有意义。

 

下面是二维数组的初始化。

public static void main(String[] args) {

		System.out.println("game start!");
		//二维数组静态初始化
		int[][] arr = new int [][]{{1,2,3},{4,5},{6}};
		int arr1 [][] = {{1,2,3},{4,5},{6}};
		
		//数组之间的赋值
		int[][] arr7 = new int [3][];
		arr7[0] = arr[0];
		for(int i = 0;i < arr7[0].length; i++ )
		{
			System.out.println("数组赋值测试 - :" + arr7[0][i]);
		}
		
		//二维数组的长度获取
		System.out.println("arr.length : " + arr.length);
		for(int i = 0; i < arr.length; i++)
			System.out.println("arr[" + i + "].length : " + arr[i].length);
		
		//二维数组的遍历
		for(int i = 0; i < arr.length; i++)
		{
			for(int j = 0; j < arr[i].length; j++)
				System.out.print(arr[i][j] + " ");
			System.out.println();
		}
		
		//二维数组动态初始化
		int arr2[][] = new int [3][2];
		int arr3[][] = new int [3][];
		
		System.out.println("arr2.length : " + arr2.length);
		System.out.println("arr2[0].length : " + arr2[0].length);
		
		//二维数组第二维新建对象
		arr3[0] = new int[4]; 
		System.out.println("arr3.length : " + arr3.length);
		System.out.println("arr3[0].length : " + arr3[0].length);
		
		String[][] arr4 = new String[3][2];
		String[][] arr5 = new String[3][];
		
		//二维数组的初始化元素
		int arr6[][] = new int [3][4];
		System.out.println(arr6);//[[I@15db9742
		System.out.println(arr6[0]);//[I@15db9742
		System.out.println(arr6[0][0]);
	}

有趣的是:你可以这样定义二维数组:int[] arr[];

类(结构体)数组定义与上述int数组定义相同。

比如下面是Bank类,里的Customer数组声明,与数组赋值。

class Bank{
	private Customer[] customers = new Customer[10007];//这里必须先声明数组长度!!
	private int numberOfCustomer = 0;
	
	public Bank(){
	}
	public Customer getCustomer(int id) {
		if(id >= 0 && id <= numberOfCustomer)
		return customers[id];
		System.out.println("输入客户id有误!!");
		return null;
	}
	public int getNumberOfCustomer() {
		return numberOfCustomer;
	}
	public void addCustomer(String firstName,String lastName){
		customers[numberOfCustomer] = new Customer(firstName,lastName);
		this.numberOfCustomer++;
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值