7.13数组

数组是引用数据类型,不属于基本数据类型,
数组的父类是object.数组中可以存储基本数据类型的数据,
也可以存储引用数据类型的数据
数组是存储在堆当中,
数组中存储的是对象的引用
数组一旦创建,长度不可变,
所有的数组对象都有length属性,
用来获取数组中的元素的个数,
数组中元素类型必须统一,
数组中收元素的内存地址作为整个数组的内存地址
数组中每个元素都有下标,下标从0开始,最后一个元素的下标是length-1,对数组中的元素进行存取的时候,需要通过下标来进行
数组这种数据类型检索效率高
数组的缺点:由于为了保证数组中每个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候,效率较低,因为随机增刷元素会涉及到后面元素统一向前或者向后使移的条作。因为很难在内存空间上找到一块特别大的连续内存空间,数组不能存储大数超量。
对于数组中最后一个元素的增删,对于效率是没有影响的

一维数组

  1. 语法格式:
    int[]array1;
    double[]array2;
    boolean[]array3;
    String[] array4;
    Object[] array5;
  2. 数组的初始化:
    静态初始化: int[] array={1,2,3,4};
    动态初始化: int[] array=new int{3};3表示数组的元素个数,初始化一个3个元素长度的Int类型数组。默认值是0
public class tast01 {
    public static void main(String[] args) {
        int a[]={1,2,3,4,5555,55};
        System.out.println(a.length);
        System.out.println(a[0]);
        System.out.println(a[a.length-1]);
         for (int i=0; i<a.length;i++){
            System.out.println(a[i]);
        }
    }
    }
}

main方法的一维数组String[] args的作用
JVM调用nain方法的时候,会自动传一个string数组过来。JVM默认传递过来的数组长度是0。

public class test02 {
    public static void main(String[] args) {
        System.out.println(args.length);
    }
}

一维数组的扩容:
先新建一个大容量的数组,然后将小容量的数组拷贝到大容量数组当中,数组扩容效率较低,不建议用数组扩容,或者减少使用数组扩容的次数。

public class test02 {
    public static void main(String[] args) {
        System.arraycopy();
    }
}

数组的拷贝:

package com.array.java;

public class test02 {
    public static void main(String[] args) {
        int []src={1,2,3,3,4,4,44};//拷贝源
        int []dest=new int[20];//动态初始化一个元素为20的数组,(拷贝目标)
        System.arraycopy(src,0,dest,0,7);//调用arraycopy完成数组的拷贝(源,源的起始位置,目标,目标的起始位置,拷贝元素个数)
        //遍历目标数组
        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);
        }
    }
}

二维数组

二维数组是特殊的一维数组,将一维数组当中每个元素当成一位数组

package com.array.java;

public class test02 {
    public static void main(String[] args) {
       int [][]a={
               {1,2,3,6},
               {11,22,333},
               {333,444,5555}
       };
        System.out.println(a.length);//3
        System.out.println(a[0].length);//4
    }
}

作业:使用一位数组模拟栈数据结构
1、这个栈可以存储java中的任何引用类型的数据。
2、在栈中提供push方法模拟压栈。(栽满了,要有提示信息。)
3、在栈中提供pop方法模拟弹栈。(栈空了,也有有提示信息。)
4、编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈的动作。

public class Mystack{//栈类
//提供一个数组来存储栈中的元素object[]elements;
//栈帧(永远指向栈顶部的元素)
//每加1个元素,栈帧+1//每减1个元素,栈帧-1
int index;
//构造方法
//构造方法是不是应该给一维数组一个初始化容量。
//push方法(push方法压栈)
//压栈表示栈中多一个元素。
//但是栈如果已满,压栈失败。
//这个方法的参数以及返回值类型自己定义。
//pop方法(pop方法弹栈)
//弹栈表示栈中少一个元素。//但是栈如果已空,弹栈失败。
//这个方法的参数以及返回值类型自己定义。
main(){
测试.
}

第二题:
为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能。
1、该系统的用户是:酒店前台。
2、酒店使用一个二维数组来模拟。Room[][]rooms;"
3、酒店中的每一个房间应该是一个java对象:Room
4、每一个房间Room应该有:房间编号、房间类型、房间是否空闲.
5、系统应该对外提供的功能:
可以预定房间:用户输入房间编号,订房。
可以退房:用户输入房间编号,退房。
可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值