第六章 数组

来源:互联网 发布:传奇数据库修改 编辑:程序博客网 时间:2024/04/27 23:43

一、java中数组也是一种引用类型

java中基本数据类型只有8种,其他所有的类型都是引用类型,跟C语言中一样,数组都是对同一类型数据存放,大小一旦声明就固定,空间连续。

数组的声明方法:

int[]  at =  new int[常量/字面量];

数组下标,从0到length-1,java中数组 的引用不再是地址,而是对地址进行哈希编码后的一个值,可以唯一对应一个存储空间。

所有的数组都有一个属性。at.length,它是数组的长度。

如果是字符串,string.length()这是一个方法。

二、引用类型的数组

引用类型的数组中,存放的是引用。必须先对每个元素(引用)用new关键字创建一个新的对象才能正常使用,否则引用自动初始化为null,无法使用,会报空指针异常。

Student[]   student  =   new Student[20];//创建引用数组

for(int i = 0 ;i<student.length; i++){

      student[i]  =new  Student();//创建每个引用    所对应的对象,之后才能正常使用。

}

三、javaDoc注释

这种注释是java3中注释之一。专门用来生成帮助文档的,

常见的有:

@auther   作者

@version   版本

@see    联接

@param   方法的形式参数

@return  返回值的注释

@exception   异常

 

克服数组大小限制的方法:

用一个小点的数组,满了之后,新建一个大的数组,数据复制过去,再删除小的数组。

import java.util.Scanner;public class User {/** * @ */private String name;//姓名private String password;//密码private float account;//账户余额public static User add() {// TODO Auto-generated method stubScanner scan = new Scanner(System.in);System.out.println("请输入用户名:");String name = scan.next();System.out.println("请输入用户密码:");String password = scan.next();System.out.println("请输入用户账户金额:");float account = scan.nextFloat();User user = new User(name,password,account);return user;}public void change(){Scanner scan = new Scanner(System.in);System.out.println("请输入修改后的用户密码:");this.password = scan.next();System.out.println("请输入修改后的用户账户金额:");this.account = scan.nextFloat();System.out.println("用户信息修改完成!新的用户信息如下:");this.toString();}public User(){System.out.println("1个 User 对象创建!");}public User(String name, String password, float account) {super();this.name = name;this.password = password;this.account = account;System.out.println("***************一个新的用户对象产生了!*******************");}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public float getAccount() {return account;}public void setAccount(float account) {this.account = account;}@Overridepublic String toString() {return "User [name=" + name + ", password=" + password + ", account="+ account + "]";}}


 

import java.util.Scanner;public class UserArray {/** * @param args */private static final int firstLength = 3;private static final int value = 2;private User user[] = new User[firstLength];private int size = 0;public UserArray(){System.out.println("*******************一个新的  UserArray 对象产生了!************************");}public UserArray(User[] user, int size) {super();this.user = user;this.size = size;}//内部员工操作流程//运行public  void run(){//this.init();this.welcome();while(true){switch(this.choice()){case 1: this.addUser();break;case 2: this.deleteUser(this.imput());break;case 3: this.querryUser(this.imput());break;case 4: this.changeUser(this.imput());break;case 5: this.show();break;case 6: return ;//break;default:System.out.println("没有该选项!");break;}}}//欢迎界面private void welcome(){System.out.println();System.out.println();System.out.println("******************************");System.out.println("********内部员工操作平台*******");System.out.println("************version:1.0*******");System.out.println("******************************");System.out.println();System.out.println();}//输入操作private int imputChoice(){System.out.println("请输入操作:");Scanner scan = new Scanner(System.in);return scan.nextInt();}//输入用户 下标private int imput(){System.out.println("请输入用户下标:");Scanner scan = new Scanner(System.in);return scan.nextInt();}//菜单private int choice(){System.out.println("请选择操作:");System.out.println("1.添加用户信息   2.删除用户数据  " +   "3.查询用户信息  4.修改用户信息    5.遍历所有的用户信息     6.退出");return this.imputChoice();}//添加用户public  void addUser(){System.out.println("请输入本次增加的用户数量:");Scanner scan = new Scanner(System.in);int number = scan.nextInt();for(int i = 0; i < number ;i++){System.out.println("请输入第"+(i+1)+"个用户");User tempuser = User.add();if(this.size < this.user.length){this.user[this.size] = tempuser;this.size++;}else{User[] newuser = new User[this.user.length + value];System.arraycopy(this.user, 0, newuser, 0, this.size);this.user = newuser;this.user[this.size] = tempuser;this.size++;System.out.println("用户数组长度增加"+value);}}}//删除用户private boolean deleteUser(int index){if(index >= 0 && index < this.size){for(int i = index ; i< this.size - 1;i++){this.user[i] = this.user[i+1];}this.size--;System.out.println(this.user[index].toString()+"删除成功!");}else{System.out.println("该用户不存在!");return false;}if(this.user.length > firstLength && (this.user.length - this.size) > value){User[] newuser = new User[this.user.length - value];System.arraycopy(this.user, 0, newuser, 0, this.size);this.user = newuser;System.out.println("用户数组长度减小"+value);}return true;}//查询用户信息private User querryUser(int index){if(index >= 0 && index <this.size){System.out.println("查询到"+this.user[index].toString());return this.user[index];}else{System.out.println("对不起,你输入的下标不存在 ,无法查询");return null;}}//遍历所有用户信息private void show(){if(this.size == 0){System.out.println("ATM中暂时还没有用户数据!");}for(int i = 0 ;i < this.size ; i++){System.out.println("用户:"+i);this.querryUser(i);}}//修改用户信息private boolean changeUser(int index){if(index >= 0 && index <this.size){this.user[index].change();return true;}else{return false;}}public User[] getUser() {return user;}public int getSize() {return size;}}


 

原创粉丝点击