java基础之二维数组+面向对象基础

二维数组的使用

1.1、使用foreach遍历二维数组

package com.wlx.day04;

public class TwoArrayDemo
{
    /**
     *
     * @param args
     */
    public static void main(String[] args)
    {
        //声明二维数组,并静态初始化
        int[][]  a = new int[][]{{22,23,25,26},{32,35,33,36,37,38}};
        //使用foreach遍历数组a
        //第一个foreach循环是循环的二维数组中的每一个一维数组
        for(int[]  ar:a)
        {
            //对二维数组中的每一个一维数组再次进行遍历
            for(int  arr:ar)
            {
                //输出二维数组中的元素值
                System.out.println(arr);
            }
        }
    }
}

复制数组

使用System类中的arraycopy()方法,可以复制指定数组中元素到目标数组中。

package com.wlx.day04;

public class Demo
{
    public static void main(String[] args) {
        int[]  a = new int[]{2,3,5,6,7,8};
        int[]  b = new int[3];

        /*//按照b数组的长度将数组a中的元素遍历出来,并复制给b数组
        for(int i = 0;i < b.length;i++)
        {
            b[i] = a[i];
        }

        //遍历数组b
        for(int j = 0;j < b.length;j++)
        {
            System.out.println("b["+j+"] = "+b[j]);
        }*/
        /*
        使用System类中的arraycopy()方法从数组a中复制元素到数组b中
        srcPos2是从数组a中的那个下标/索引位置开始复制元素
        destPos0是从数组b中的那个下标位置开始复制元素
        length 3表示从数组a中复制3个元素到数组b中
        */
        System.arraycopy(a,2,b,0,3);
        //遍历数组b
        for(int j = 0;j < b.length;j++)
        {
            System.out.println("b["+j+"] = "+b[j]);
        }
    }
}

数组工具类

数组工具类是java.util.Arrays;

1.1、复制数组

使用Arrays工具类中的copyOf()方法复制指定数组中的元素到目标数组中,copyOfRange()可以指定复制的下标位置。

package com.wlx.day04;

import java.util.Arrays;

public class Demo
{
    public static void main(String[] args) {
        int[]  a = new int[]{2,3,5,6,7,8};
        int[]  b = new int[3];

        /*//按照b数组的长度将数组a中的元素遍历出来,并复制给b数组
        for(int i = 0;i < b.length;i++)
        {
            b[i] = a[i];
        }

        //遍历数组b
        for(int j = 0;j < b.length;j++)
        {
            System.out.println("b["+j+"] = "+b[j]);
        }*/
        /*
        使用System类中的arraycopy()方法从数组a中复制元素到数组b中
        srcPos2是从数组a中的那个下标/索引位置开始复制元素
        destPos0是从数组b中的那个下标位置开始复制元素
        length 3表示从数组a中复制3个元素到数组b中
        */
//        System.arraycopy(a,2,b,0,3);

        //遍历数组b
        /*for(int j = 0;j < b.length;j++)
        {
            System.out.println("b1["+j+"] = "+b[j]);
        }*/

        //int[]  b1 = Arrays.copyOf(a,16);
/*
        从数组a中下标为2的地方开始复制(包括起始点2),到下标位置5结束复制(不包括结束点),如果超出了数组a
        的长度,同样使用int的默认值填充
         */
        int[] b1 = Arrays.copyOfRange(a,2,5);
        //遍历数组b1
        for(int j = 0;j < b1.length;j++)
        {
            System.out.println("b1["+j+"] = "+b1[j]);
        }
        //遍历数组b1
        for(int j = 0;j < b1.length;j++)
        {
            System.out.println("b1["+j+"] = "+b1[j]);
        }
    }
}

1.2、比较两个数组是否相等

package com.wlx.day04;

import java.util.Arrays;

public class ArraysEqualsDemo
{
    public static void main(String[] args) {

        int[]  a = new int[]{2,3,5,6,7,8};
        int[]  b = new int[]{2,5,3,6,7,8};

        //比较数组a和数组b是否相等,如果相等返回true,如果不相等返回false
        boolean bl = Arrays.equals(a,b);
        System.out.println("bl = "+bl);


    }
}

1.3、数组排序

使用工具类Arrays中的sort()方法将数组元素进行排序。

package com.wlx.day04;

import java.util.Arrays;

public class ArraysSortDemo
{

    static int[] b;

    public static void main(String[] args) {

        int[]  a = new int[]{62,13,35,63,17,68};
        //使用Arrays工具类对数组a进行排序,自然排序(从小到大排序)
        Arrays.sort(a);
        //遍历数组a
        /*for(int i = 0;i < a.length;i++)
        {
            System.out.println(a[i]);
        }*/

        //使用数组工具类,直接输出数组中排序后的元素字符串表达形式
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));//输出结果是"null"
        int[] c = new int[]{};
        System.out.println(Arrays.toString(c));//输出的结果是[]

    }

}

1.4、二分搜索法

使用Arrays类中的binarySearch()方法可以完成二分搜索。

package com.wlx.day04;

import java.util.Arrays;

public class ArraysSortDemo
{


    public static void main(String[] args) {

        int[]  a = new int[]{62,13,35,63,17,68};
        //使用Arrays工具类对数组a进行排序,自然排序(从小到大排序)
        Arrays.sort(a);
        //使用二分搜索法,查找数组a中是否存在16这个元素
        int num = Arrays.binarySearch(a,16);
        System.out.println("数组a中16的下标是:"+num);

    }

}

1.5、数组练习

package com.wlx.day04;

import java.util.Scanner;

public class HotelSystem
{
    /**
     * 练习:
     * 	写一个完整的酒店住宿管理系统,
     * 	即如果有客户入住,则能够进行入住操作,如果有客户退房,
     * 	能够为客户办理退房手续,如果有客户换房间,同样也能够换房间;
     * 	能够根据客户姓名查找该客户所住房间号。
     * @param args
     */
    public static void main(String[] args) {
        String[][]  roomInfo = new String[][]{
                {"张国伟","刘翔","全红婵"},
                {"空","邓紫棋","空","迪丽热巴"},
                {"空","成龙","沈晨"},
                {"马嘉祺","刘耀文"}
        };


        while(true)
        {
            System.out.println("---欢迎使用Xxx酒店管理系统---");
            System.out.println("---1、办理入住---");
            System.out.println("---2、办理退房---");
            System.out.println("---3、办理换房---");
            System.out.println("---4、查找客户---");
            System.out.println("---5、退出系统---");
            System.out.println("---欢迎使用Xxx酒店管理系统---");
            Scanner  s = new Scanner(System.in);
            String num = s.next();
            if(num.equals("1"))
            {
                //办理入住
                System.out.println("请输入您的姓名:");
                String username = s.next();
                bh:for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        //判断房间是否为空房间
                        if(roomInfo[i][j].equals("空"))
                        {
                            //入住
                            roomInfo[i][j] = username;
                            System.out.println(username+"成功入住"+(i+1)+"0"+(i+j)+"房间");
                            break bh;
                        }
                    }
                }
                System.out.println("入住后的信息如下:");
                for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        System.out.println((i+1)+"0"+(i+j)+"房间"+roomInfo[i][j]+"在住");
                    }
                }

            }
            else if(num.equals("2"))
            {
                //办理退房
                System.out.println("请输入要退房间的姓名:");
                String username = s.next();
                bh:for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        //判断房间是否为要退房间的用户
                        if(roomInfo[i][j].equals(username))
                        {
                            //退房
                            roomInfo[i][j] = "空";
                            System.out.println(username+"办理退房"+(i+1)+"0"+(i+j)+"房间成功");
                            break bh;
                        }
                    }
                }

                System.out.println("退房后的信息如下:");
                for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        System.out.println((i+1)+"0"+(i+j)+"房间"+roomInfo[i][j]+"在住");
                    }
                }

            }
            else if(num.equals("3"))
            {
                //办理换房
                System.out.println("请输入要换房间的姓名:");
                String username = s.next();
                bh:for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        //判断房间是否为要换房间用户
                        if(roomInfo[i][j].equals(username))
                        {
                            //置空该房间
                            roomInfo[i][j] = "空";
                            for(int k = 0;k < roomInfo.length;k++)
                            {
                                for(int h = 0;h < roomInfo[k].length;h++)
                                {
                                    if(roomInfo[k][h].equals("空"))
                                    {
                                        roomInfo[k][h] = username;
                                        System.out.println(username+"办理换房"+(k+1)+"0"+(k+h)+"房间成功");
                                        break bh;
                                    }
                                }
                            }

                        }
                    }
                }

                System.out.println("换房后的信息如下:");
                for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        System.out.println((i+1)+"0"+(i+j)+"房间"+roomInfo[i][j]+"在住");
                    }
                }
            }
            else if (num.equals("4"))
            {
                //查找客户
                System.out.println("请输入您要查询的姓名:");
                String username = s.next();
                bh:for(int i = 0;i < roomInfo.length;i++)
                {
                    for(int j = 0;j < roomInfo[i].length;j++)
                    {
                        //判断房间是否为要查询用户的房间
                        if(roomInfo[i][j].equals(username))
                        {
                            System.out.println(username+"住在"+(i+1)+"0"+(i+j)+"房间");
                            break bh;
                        }
                    }
                }
            }
            else if(num.equals("5"))
            {
                System.out.println("您已退出系统");
                return;
            }
            else
            {
                System.out.println("输入错误,请重新输入!");
            }
        }

    }
}

面向对象

1.1、面向对象和面向过程

想吃纸包鱼。
想吃钵钵鸡。
面向过程:
去菜场买鱼—>杀鱼—>准备材料(蒜香/包鱼的纸)—>做纸包鱼—>先放材料—>用纸把材料和鱼包在一起—>等待时间—>吃到纸包鱼。
面向对象:
点外卖。
去饭店吃。

1.2、package

package包.
一个类文件中只能有0~1个package包的声明,并且在除注释以外的第一行 。
包声明规则:
1、所有包名都全部小写。
2、包与包之间的分隔符是英文的点。
3、如果是公司或组织,包名是域名或组织倒过来写,不包括www。
包的作用:
1、区分同名的类。
2、划分模块。
3、分割属性或方法的访问权限。

1.3、方法/函数

方法用于指定一个类的行为或功能。
方法用于指定一个类的行为或功能。
方法声明的格式:
[访问权限修饰符] [修饰符] 返回值类型 方法名(参数列表)[抛出的异常]
{
方法体/函数体;
}
备注:1、参数列表,该方法可以有多个参数,参数其实就是定义一个变量,并且没有初始化的参数,参数与参数之间使用英文的逗号分割,参数列表可以有0~n个变量参数。
2、方法体中主要写的是行为的具体实现过程或功能的具体实现过程。
3、void表示该方法什么也不返回
Infinity表示正无穷大
-Infinity表示负无穷大
NaN not an number 表示不是一个数值

package com.wlx.day04;

public class MethodDemo
{

    /**
     * 声明一个方法/函数
     * static表示修饰符,修饰该方法method是一个静态的方法
     * 此处的int表示使用/调用method方法时,返回int类型的数据
     * String s表示该method方法有一个String类型的参数,参数名叫s
     * return 6表示调用/使用method方法时,返回一个int类型的6给调用者
     */
    static int  method(String s)
    {
        return 6;
    }

    /**
     * void表示该方法method2没有返回值类型,即什么都不返回
     * @param a
     * @param b
     */
    static void  method2(int a ,int b)
    {
        //使用形参(形式上的参数,即只有定义没有初始化的变量)a和b
        System.out.println("a = "+a);
        System.out.println("b = "+b);
    }


    public static void main(String[] args) {

        //使用method方法
        System.out.println(method("hello"));
        //使用method2方法
        method2(3,6);

    }

}

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值