数组数组数组

今天也要好好学Java!!         

数组

    数组是相同类型数据的有序集合。其中,每一个数据称作一个元素,每个元素可以通过一个索引,来访问他们。数组的四个基本特点:

  1. 长度是确定的。数组一旦被创建,他的大小就不可以改变。
  2. 其元素的类型必须是相同类型,不允许出现混合类型。
  3. 数组类型可以使任何数据类型,包括基本类型和引用类型,
  4. 数组变量属于引用类型,数组也是对象,数组中的元素相当于对象的属性。

创建数组和初始化

    数组的声明方式

            type[] arr_name;//方式一

            type arr_name[];//方式二

            /*声明时别没有实例化对象,只有在实例化数组对象时,jvm才分配空间,这是才与长度有关。

             *声明一个数组的时候并没有数组真正被创建。

             *构造一个数组,必须指定长度*/

package array;

//数组的声明和创建
public class Test01 {
	public static void main(String[] args) {
		int[] s;// 声明
		s = new int[10];// 创建

		System.out.println(s[0]);
		System.out.println(s[1]);
		for (int i = 0; i < 10; i++) {
			s[i] = i + 1;
			System.out.println(s[i]);
		}
		Student st[] = new Student[10];
		for (int j = 0; j < 10; j++) {
			st[j] = new Student(j+1, (int) (Math.random() * 20));
			System.out.println(st[j].id + "  " + st[j].age);
		}

	}
}

class Student {
	int id;
	int age;

	public Student(int id, int age) {
		this.id = id;
		this.age = age;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

        初始化

  1. 数组的静态初始化

除了用new关键字来产生数组以外,还可以直接定义数组的同时就为数组元素分配空间并赋值。

  1. 数组的动态初始化

数组定义与为数组元素分配空间并赋值的操作分开进行

  1. 数组的默认初始化

数组是对象,它的元素相当于对象的属性,每个元素也按照属性的方式被默认初始化。

package array;
//测试数组的三种初始化方式
public class Test02 {
	public static void main(String[] args) {
		int[] a = {10,20,30,40};
		Student st[] = {new Student(0, 0),
					    new Student(1, 0),
					    new Student(2, 0)};
		System.out.println(a[1]);
		System.out.println(st[2].getId());//静态初始化
		
		int[] s;
		s = new int[10];
		for (int i = 0; i < 10; i++) {
			s[i] = i + 1;
			System.out.println(s[i]);
		}//动态初始化
		
		
		int a1[]=new int[2];
		System.out.println(a1[0]);//默认初始化
	}
}

 

遍历、拷贝

       遍历指的就是“通过循环遍历数组的所有元素”

package array;
//测试遍历
public class Test03 {

	public static void main(String[] args) {
		String[] cities = {"北京","上海","广州","深圳"};
		for(int i=0;i<cities.length;i++) {
			System.out.println(cities[i]);
		}
		for (String t : cities) {
			System.out.println(t);
		}//for each增强for只用于简单遍历
	}

}

 

        拷贝指的是将某个数组的内容拷贝到另一个数组中

package array;
//测试拷贝
public class Test04 {

	public static void main(String[] args) {
		int[] a = {1,2,3,4,5,6,7,8,9,10};
		int[] c = new int[6];
		System.arraycopy(a, 0, c, 0, c.length);
		for(int i=0;i<c.length;i++) {
			System.out.print(c[i]+" ");
		}
	}

}

 

多维数组

   多维数组可以看成以数组为元素的数组。

package array;

import java.util.Arrays;

//测试多维数组的初始化
public class Test06 {

	public static void main(String[] args){
		int[][] a = new int[3][];
		a[0] = new int[2];
		a[1] = new int[2];
		a[2] = new int[2];
		
		a[0][0]  =100;
		a[0][1]  =101;
		int[][] b = {
				{1,2,3},{3,4},{3,4,5,6}
		};
		int[][] c = new int[3][];
		c[0] = new int[]{1,2};
		c[1] = new int[]{12,3};
		c[2] = new int[]{3,4,5};
		System.out.println(Arrays.toString(a[0]));
		System.out.println(Arrays.toString(b[1]));
		System.out.println(Arrays.toString(c[2]));
		
		}

}
package array;

import java.util.Arrays;

//测试object二维数组存储表格数据
public class Test07 {

	public static void main(String[] args) {
		Object[] o1=  {1001,"wyh","123"};
		Object[] o2 = {1002,"wyh","456"};
		Object[] o3 = {1003,"wyh","789"};
		Object[][] emps = new Object[3][];
		emps[0] = o1;
		emps[1] = o2;
		emps[2] = o3;
		System.out.println(Arrays.toString(emps[0]));
		System.out.println(Arrays.toString(emps[1]));
		System.out.println(Arrays.toString(emps[2]));
		
		
		for(int i = 0; i < emps.length ;i++) {
			for(int j=0;j<emps[i].length;j++) {
				System.out.print(emps[i][j]+"  ");
			}
			System.out.println();
		}
	}

}

package array;

import java.util.Arrays;

//使用javabean和数组保存表格数据
public class Test08 {

	public static void main(String[] args) {
		Emp[] emps = { new Emp(1001, "wyh", "123"), new Emp(1002, "wyh", "456"), new Emp(1003, "wyh", "789") };
		for (Emp emp : emps) {
			System.out.println(emp.toString());
		}
	}

}

class Emp {
	private int id;
	private String name;
	private String job;

	public Emp(int id, String name, String job) {
		super();
		this.id = id;
		this.name = name;
		this.job = job;
	}
	@Override
	public String toString(){
		return
			"Emp{"+"id="+id+",name='"+name+"\'"+",job='"+job+"\'"+"}";
		
	}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值