第六章 数组
来源:互联网 发布:传奇数据库修改 编辑:程序博客网 时间: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;}}
- 第六章 “另类”数组
- 第六章 “另类”数组
- 第六章 “另类”数组
- 第六章 数组
- 第六章数组总结
- 第六章 “另类”数组
- 第六章 数组
- 第六章 数组
- 第六章 数组
- 第六章 数组
- 第六章数组 第一题
- 第六章数组 第三题
- 第六章数组 第五题
- 第六章数组 第四题
- 第六章:数组和字符串
- C语言第六章:数组
- 第六章 数组(慕课)
- 第六章(一维数组)
- ios audio unit remoteIO playback record
- QT210 -> u-boot-samsung-dev中的Makefile.mk文件注释
- 性格决定生死:6种坏性格害你早死
- 应届生找工作常遇到的一些小问题
- 基于mini2440的qtopia程序设计之二:如何在qtopia创建快捷方式
- 第六章 数组
- 给出一个数组,打印出这个数组的所有的子数组
- https学习笔记一
- TCP协议的一些认识及实践
- QString和char*的汉字乱码问题
- 单片机串口调试丢包验证过程记录_已解决
- 深入研究ReentrantLock(重入锁)之引出话题篇
- gcc 编译静态链接库
- 新浪微博API使用初步介绍——解决回调地址的问题