数组初始化&遍历&拷贝&存储表格数据&compare接口

数组定义(相同数据类型的有序集合)

如何理解数组也是对象

如何理解数组也是对象

四个特点

  1. 长度确定,大小是不可以被改变的
  2. 元素类型必须是相同类型
  3. 数组类型可以是任何数据类型,基本类型和引用类型
  4. 数组变量属于引用类型,数组也是对象,数组中的元素就是对象的属性

创建数组和初始化

默认初始化

  1. int型初始化默认值是0
  2. Boolean型初始化默认为false
  3. String型默认初始化为null
int a2[ ] = new int[2]; // 默认值:0,0
boolean[ ] b = new boolean[2]; // 默认值:false,false
String[ ] s = new String[2]; // 默认值:null, null

动态初始化

  1. 动态初始化通过下标赋值
int[ ] a1 = new int[2];//动态初始化数组,先分配空间;
a1[0]=1;//给数组元素赋值;
a1[1]=2;//给数组元素赋值;

静态初始化

int [ ] a = { 1, 2, 3 };// 静态初始化基本类型数组;
Man[ ] mans = { new Man(1, 1), new Man(2, 2) };// 静态初始化引用类型数组

遍历(增强for循环)&初始化

package com.ssc.array;

public class ArrayRef {
	
	public static void main(String[] args) {
		Man m = new Man(10,"孙少聪");
		//静态初始化碧血在申明后直接初始化
		Man[] uMans = {
				m,	//相当于 uMans[0]=m
				new Man(10,"熊举举"),
				new Man(10,"和佳佳"),
				new Man(10,"徐贵冬"),
				new Man(10,"王秋红")
			};
		for(int i=0;i<uMans.length;i++) {
			System.out.println(uMans[i].getName());
		}
		//增强for循环
		for(Man man:uMans) {
			System.out.println(man);
		}
	}
	
	
}
class Man{
	private int id;
	private String name;
	
	
	public Man() {}
	/**
	 * @param id
	 * @param name
	 */
	public Man(int id, String name) {
		super();	//写不写都行
		this.id = id;
		this.name = name;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "id:"+id+", name:"+this.name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

数组拷贝&排序&填充

  • static void arraycopy(object src,int srcpos,object dest,int destpos,int length)
    该方法可以将 src 数组里的元素值赋给 dest 数组的元素,其中 srcpos 指定从 src 数组的第几个元素开始赋值,length 参数指定将 src 数组的多少个元素赋给 dest 数组的元
  • System.arraycopy(str, 0, strCopy, 0, str.length);
  • Arrays.sort(str1);
  • Arrays.binarySearch(str1, 102)
  • Arrays.toString(str1)
  • Arrays.fill(str1 ,2, 4, 100);
package com.ssc.array;

import java.util.Arrays;

public class ArrayCopy {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] str = {"孙少聪","熊举举","和佳佳","徐贵冬"};
		String[] strCopy = new String[4];
		int[] str1 = {100,200,300,102,136};
		
		//数组拷贝
		System.arraycopy(str, 0, strCopy, 0, str.length);
		
		for(String m:strCopy) {
			System.out.println(m);
		}
		
		//数组排序
		//toString()
		Arrays.sort(str1);
		System.out.println(Arrays.toString(str1));
		
		//二分查找必须先使用sort进行排序再进行二分查找
		System.out.println("数组二分查找结果:"+Arrays.binarySearch(str1, 102));
		
		//填充,包头不包尾
		//将str1里面的(2,4)元素替换为100
		Arrays.fill(str1 ,2, 4, 100);
		System.out.println(Arrays.toString(str1));
		
	}

}

多维数组

多维数组初始化

package com.ssc.array.twoarray;

import java.util.Arrays;

public class TwoArray {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] uint = new int[3][];
		uint[0] = new int[] { 1};
		uint[1] = new int[] {1,2};
		uint[2] = new int[] {1,2,3};
		System.out.println(Arrays.toString(uint[0]));
		
		//静态初始化
		int[][] uint1 = new int[][] {{12,3},{2,3,4},{5,6,7}};
		System.out.println(Arrays.toString(uint1[0]));
	}
}

用javabean和二维数组,存储一个表格数据,并且用toString()和嵌套循环来遍历,创建方法来筛选满足条件的对象

package com.ssc.array.twoarray;

import java.util.Arrays;

public class TabelJavabean {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TabelJavabean a = new TabelJavabean();
		Emp emp0 = new Emp(1001, "美羊羊", 20, "程序员", "2019-3-5");
		Emp emp1 = new Emp(1001, "懒羊羊", 15, "程序员", "2019-3-5");
		Emp emp2 = new Emp(1001, "沸羊羊", 22, "程序员", "2019-3-5");
		Emp emp3 = new Emp(1001, "喜羊羊", 25, "程序员", "2019-3-5");
		
		Emp[][] emps = new Emp[4][];
		emps[0] = new Emp[] {emp0};
		emps[1] = new Emp[] {emp1};
		emps[2] = new Emp[] {emp2};
		emps[3] = new Emp[] {emp3};
		
		
		//toString遍历数组
		for(int i=0;i<emps.length;i++) {
			System.out.println(Arrays.toString(emps[i]));
		}
		
		
		System.out.println("=============================================");
		//嵌套循环遍历数组
		for(int i=0;i<emps.length;i++) {
			for(int j=0;j<emps[i].length;j++) {
				System.out.println(emps[i][j]);
			}
		}
		
		
		System.out.println("=============================================");
		//创建方法找寻符合条件的对象
		//定义了一个方法来查找符合条件的对象
		a.seaechAge(emps, 21);
	}
	public void seaechAge(Emp[][] a,int age) {
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {
				if(a[i][j].getAge()<=age) {
					System.out.println(Arrays.toString(a[i]));
				}
			}
		}
	}
	
}
class Emp{
	private int id;
	private String name;
	private int age;    
	private String job;    
	private String hiredate;
	
	/**
	 * 
	 */
	public Emp() {
		super();
	}

	/**
	 * @param id
	 * @param name
	 * @param age
	 * @param job
	 * @param hiredate
	 */
	public Emp(int id, String name, int age, String job, String hiredate) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.job = job;
		this.hiredate = hiredate;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return ""+getId()+'\t'+getName()+'\t'+getAge()+'\t'+getJob()+'\t'+getHiredate();
	}

	public int getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public String getJob() {
		return job;
	}

	public String getHiredate() {
		return hiredate;
	}

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

	public void setName(String name) {
		this.name = name;
	}

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

compare接口

  • 想对某个类的对象之间做比较,就需要实现 Comparable 接口。接口中只有一个方法compareTo,这个方法定义了对象之间的比较规则。 依据这个“比较规则”,我们就能对所有对象实现排序

  • public int compareTo(Object obj) obj 为要比较的对象

package com.ssc.array;

import java.util.Arrays;

import org.w3c.dom.UserDataHandler;

public class Compare {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Ssc[] uSsc1 = { 
						new Ssc(20,"孙少聪"),
						new Ssc(19,"熊举举"),
						new Ssc(21,"和佳佳")
		};
		Arrays.sort(uSsc1);
		System.out.println(Arrays.toString(uSsc1));
	}

}
class Ssc implements Comparable<Object>{
	int age;
	String name;
	
	public Ssc(int age,String name) {
		// TODO Auto-generated constructor stub
		this.age = age;
		this.name = name;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.name;
	}
	public int compareTo(Object o) {
		Ssc uSsc= (Ssc) o;
		if (this.age < uSsc.age) {
			return -1;
		}
		if (this.age > uSsc.age) {
			return 1;
		}
			return 0;
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值