数组

数组

数组:相同数据类型元素的集合,是一种线性数据结构,在内存中是连续的 ,本身是引用类型, 但可以存基本类型的 数据,也可存引用类型的数据

1声明、创建

两种声明方式 : 1 数据类型 [ ] 数组名; 2 数据类型 数组名 [ ];

数组的创建: 1 声明的同时根据长度分配内存,其中元素值默认为初始化值 例:int [] c = new int [5];

​ 2 声明的同时分配内存并初始化值 例:int [] e = new int[]{9,5,4,2};

​ 3 第二种的简写:int[] e1 = {9,5,4,2};

public static void main(String[] args) {
        /*
        数组的两种声明
         */
        int a [];
        int [] b;
        /*
        数组的三种创建
         */
        int [] c = new int [5];
        int [] d = new int[]{};//0个值
        int [] e = new int[]{9,5,4,2};
        int[] e1 = {9,5,4,2};//e数组的简写
        System.out.println(c);//输出的是对象的hashCode值:[I@1b6d3586
        System.out.println(Arrays.toString(c));//将对象以字符串形式输出:[0, 0, 0, 0, 0]

        /*
        数组中存储基本类型,存的是具体值
             存储引用类型,存的是对象的引用(地址)
         */
        Car car0 = new Car("奔驰0");
        Car car1 = new Car("奔驰1");
        Car car2 = new Car("奔驰2");
        Car car3 = new Car("奔驰3");
        //存储引用类型,存的是对象的引用(地址):[com.ff.javaarray.day1.Car@4554617c,
        Car [] cars = new Car[]{car0,car1,car2,car3};
        System.out.println(Arrays.toString(cars));
    }

2数组访问

数组访问: 数组名[索引]

索引 : 1 从0开始

​ 2 数据类型是整形

​ 3 索引最大值和数组长度始终差1

​ 4 区间 0 ~ 数组长度减1

public static void main(String[] args) {
        int[] a = new int[]{7,5,2,9,3};
                      //索引 0 1 2 3 4
        System.out.println(a[3]);
        //重新赋值 输出
        a[4] = 99;
        System.out.println(a[4]);

        /*
        运行会抛出异常,因为索引非法(数组越界);
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	    at com.ff.javaarray.day1.ArrayDemo2.main(ArrayDemo2.java:21)
         */
        System.out.println(a[5]);
    }

3数组遍历

/*
数组遍历: 使用for循环(因为区间已知:即数组的索引区间)
 */
public class ArrayDemo3 {
    public static void main(String[] args) {
        int[] a = new int[]{7,5,2,9,3};
        /*for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);//取出数组第i个元素
        }*/

        /*
        foreach循环(jdk5以后):
        for (数据类型(和数组中元素的类型一样)  变量 :  要遍历的数组) { }
         */
        for (int t:a) {
            System.out.println(t);
        }
    }
}

4二维数组

public static void main(String[] args) {
        //声明
        int[][] a;
        //三种创建方式
        int [][] a1 = new int[3][2];
                    //{{1,2},{1,2},{1,2}}
        int [][] a2 = new int[][]{{1,2},{1,2},{1,2}};

        int [][] a3 = {{1,2,3},{4,5,6},{7,8,9}};
        //遍历(先取出二维数组中的一维数组,再遍历一维数组)
        for (int i = 0; i < a3.length; i++) {//取出二维数组中的一维数组
            //System.out.println(a3);输出三个一维数组的hashCode值
            for (int j = 0; j < a3[i].length; j++) {//遍历一维数组
                System.out.print(a3[i][j]+"\t");
            }
            System.out.println();

        }
    }

4.1冒泡排序

public class BubbleSort {

    private static int [] array = {9,7,3,5,1,4};
              //7,3,5,1,4,9
              //3,5,1,4,7,  9
              //3,1,4,5,    7,9
              //1,3,4,      5,7,9
              //1,3,        4,5,7,9
              //1,          3,4,5,7,9
    public static void main(String[] args){
        BubbleSort.sort(array);//像方法中传递的是数组的引用(静态方法只能调用静态成员变量)
        System.out.println(Arrays.toString(array));
    }
    /*
    顺序排
     */
    private static void sort(int[] a){//静态方法只能调用静态成员变量
        for (int i = 0; i < a.length; i++) {//比较的趟数
            for (int j = 0; j < a.length-1-i; j++) {//一趟比较的次数
                int temp;
                if (a[j] > a[j+1]){//如果前一个大于后一个,交换位置
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
    }
}

4.2插入排序

public class InsertSort {
    public static void main(String[] args) {
        int [] array = {9,7,3,5,1,4};
                      //7,9
                      //3,7,9
                      //3,5,7,9
                     //1,3,5,7,9
                     //1,3,4,5,7,9
        InsertSort.sort(array);
        System.out.println(Arrays.toString(array));
    }
    public static void sort(int[] a){
        for (int i = 0; i < a.length; i++) {
            int temp = a[i+1];//(取出)第一个要比较的元素
            int pre = i;//第一个要比较的位置
            if (temp < a[pre]){
                a[i+1] = a[pre];
                pre--;
            }
            a[pre+1] = temp;
        }
    }
}

4.3选择排序

public class SelectionSort {
    public static void main(String[] args) {
        int [] array = {9,7,3,5,1,4};
                      //1,9,7,5,3,4
                      //1,  3,9,7,5,4
                      //1,3   4,9,7,5
                      //1,3,4   5,9,7
                      //1,3,4,5,   7,9
        SelectionSort.sort2(array);
        System.out.println(Arrays.toString(array));
    }
    private static void sort(int[] a){//不优化,每比较一次都要交换一次
        for (int i = 0; i < a.length; i++) {//记录排序趟数,选出第次要比较的数
            for (int j = i+1; j < a.length; j++) {
                if (a[i] > a[j]){
                    int temp;
                    temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
    }
    /*
    优化排序方法: 1 先假设第一个是最小的元素
                2 把每次比较完后的最小元素的索引记录
                3 一次比较结束后把最小索引的元素和第一个交换
     */
    private static void sort2(int [] a){
        for (int i = 0; i < a.length; i++) {
            int minIndex = i;//假设第i(从0开始的)个元素是最小的,记录其下标
            for (int j = i+1; j < a.length; j++) {
            //for (int j = i+1; j < a.length; j++) { int j = i+1不对,因为还要和第一个比较
                if (a[minIndex] > a[j]){//用后面的和最小的比较
                    minIndex = j;//小于a[minIndex],记录其下标(重新给minTdex赋值)
                }
            }
            int temp;
            temp = a[i];
            a[i] = a[minIndex];
            a[minIndex] = temp;
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值