JAVA是一种面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都是通过对象来处理,对象可以操作类的属性和方法来解决问题,所以了解对象的产生、操作和消亡是十分必要的.
对象可以认为是在一类事物中抽象出某一个特例,通过这个特例来处理这类事物出现的问题,在Java语言中通过new操作符来创建对象。以前曾经在讲解构造方法中介绍过每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程。准确地说,可以在Java语言中使用new操作符调用构造方法创建对象。
类是对现实存在的对象归纳,对象是类的特例.”中华田园犬”就是一个类,它是对一群对象进行归纳的结果,”旺财”就是”中华田园犬”中的一个对象,一个真实存在的事物,而不是一个类的概念(对象在内存中是占有特定空间的,而类只是给这些类中的对象一个模板,列举出他们都有的一些特性).
类的数组
我定义类是为了更加合理的管理数据以及让程序更容易维护,定义类往往需要定义属于类的众多对象,这时我们会用到类的数组.下面我们看看关于类的数组的一下基本操作.例:
定义一个演员的类
import java.util.Arrays;
public class Actor {
public String name; //年龄
public int age; //年龄
public String job; //工作
public String sex; //性别
public String toString(){
String info =String.format("%s\t%d\t%s\t%s\n",
name,
age,
job,
sex
);
return(info);
}
}
在定义一个实现类的main函数
在main函数中实现数组元素的排序和增删
import java.util.Scanner;
public class ActorArrayMain {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Actor[] actorArray=new Actor[999];
int count =3;//有效长度
actorArray[0]=new Actor();
actorArray[0].name="赵丽颖";
actorArray[0].age=30;
actorArray[0].job="职业演员";
actorArray[0].sex="女";
actorArray[1]=new Actor();
actorArray[1].name="刘亦菲";
actorArray[1].age=30;
actorArray[1].job="职业演员";
actorArray[1].sex="女";
actorArray[2]=new Actor();
actorArray[2].name="潘粤明";
actorArray[2].age=43;
actorArray[2].job="职业演员";
actorArray[2].sex="男";
String answer="Y";//是否继续
int iption=0;//选择
String nameDel="";//用来接收要删除的对象的名字
Actor actorAdd=new Actor();//要插入的对象
int fd=-1;//查找下标
//排序,用年龄排序从小到大
for (int i = 0; i < count-1; i++) {
Actor temp=new Actor();
for (int j = i+1; j < count; j++) {
if(actorArray[i].age>actorArray[j].age){
temp=actorArray[i];
actorArray[i]=actorArray[j];
actorArray[j]=temp;
}
}
}
//进入系统
do{
//系统登录
System.out.println("向日葵文化传媒有限公司>演员信息管理:");
System.out.println("______________________________________________");
System.out.println("姓名\t年龄\t职业\t性别");
for (int i = 0; i < count; i++) {
System.out.print(actorArray[i]);
}
System.out.println("______________________________________________");
System.out.println("\t1,添加演员\n\t2,有序新增演员\n\t3,按年龄排序\n\t4,删除演员\n\t5,退出");
System.out.print("请输入1到5来选择:");
iption=input.nextInt();
switch(iption){
case 1://添加
do{
actorArray[count]=new Actor();
System.out.printf("请录入第%d位演员的信息:\n",count+1);
System.out.print("请输入姓名:");
actorArray[count].name=input.next();
System.out.print("请输入年龄:");
actorArray[count].age=input.nextInt();
System.out.print("请输入职业:");
actorArray[count].job=input.next();
System.out.print("请输入性别:");
actorArray[count].sex=input.next();
count++;
System.out.print("是否继续(Y/N):");
answer=input.next();
}while("y".equalsIgnoreCase(answer));
break;
case 2://有序插入
//排序,用年龄排序从小到大
for (int i = 0; i < count-1; i++) {
Actor temp=new Actor();
for (int j = i+1; j < count; j++) {
if(actorArray[i].age>actorArray[j].age){
temp=actorArray[i];
actorArray[i]=actorArray[j];
actorArray[j]=temp;
}
}
}
//输入要插入的演员信息
System.out.println("请输入要插入的演员的信息:");
System.out.print("请输入姓名:");
actorAdd.name=input.next();
System.out.print("请输入年龄:");
actorAdd.age=input.nextInt();
System.out.print("请输入职业:");
actorAdd.job=input.next();
System.out.print("请输入性别:");
actorAdd.sex=input.next();
//比较
fd=-1;//查找的下标
for (int i = 0; i < count; i++) {
if(actorArray[i].age>actorAdd.age){
fd=i;
break;
}
}
if(fd==-1){
actorArray[count]=new Actor();
actorArray[count]=actorAdd;
count++;
}else{
actorArray[count]=new Actor();
Actor temp=new Actor();
for (int i = fd; i < count+1; i++) {
temp=actorArray[i];
actorArray[i]=actorAdd;
actorAdd=temp;
}
count++;
}
break;
case 3://排序
for (int i = 0; i < count-1; i++) {
Actor temp=new Actor();
for (int j = i+1; j < count; j++) {
if(actorArray[i].age>actorArray[j].age){
temp=actorArray[i];
actorArray[i]=actorArray[j];
actorArray[j]=temp;
}
}
}
break;
case 4://删除
fd=-1;
System.out.print("请输入要删除的演员的姓名:");
nameDel=input.next();
for (int i = 0; i < count; i++) {
if(actorArray[i].name.equals(nameDel)){
fd=i;
break;
}
}
if(fd==-1){
System.out.println("现在还没有这名演员!");
}else{
for (int i = fd; i < count-1; i++) {
actorArray[i]=actorArray[i+1];
}
count--;
System.out.println("删除完成!");
}
break;
case 5:
//打印当前演员
System.out.println("______________________________________________");
System.out.println("姓名\t年龄\t职业\t性别");
for (int i = 0; i < count; i++) {
System.out.print(actorArray[i]);
}
System.out.println("______________________________________________");
System.out.println("你已经退出了演员管理系统!");
break;
default:
System.out.println("输入非法,请重新输入!");
break;
}
}while(iption!=5);
//退出了系统
System.out.println("欢迎下次使用!");
}
}
类的数组的操作本质上还是数组的操作,类的数组中的对象不过是有多个属性的变量,基本操作和对普通数组的操作是一样的.