一、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 stub
Scanner 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;
}
@Override
public 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;
}
}