一、操作数组

1、数组的复制

定义数组之后,还需要和原来一样的数组,则需要数组的复制。

System.arraycopy()方法用于数组的复制:

/**
 * @document: 数组的复制
 * @Author:SmallG
 * @CreateTime:2023/7/24+9:12
 */

public class ArrayCopyDemo01 {
    public static void main(String[] args) {
        int[] arr1 = {12, 4, 56, 32, 9, 8};
        int[] arr2 = new int[6];

        /*for (int i = 0; i < 6; i++) {
            arr2[i] = arr1[i];
            System.out.print(arr2[i] + " ");
        }
        System.out.println();*/
        //源数组  源数组起始位置  目标数组  目标数组起始位置  复制的长度
        System.arraycopy(arr1, 1, arr2, 0, 4);

        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i] + " ");
        }
        System.out.println();
    }
}

Arrays.copyof(源数组,目标数组的长度)用于数组的复制和扩容:

/**
 * @document: 数组扩容
 * @Author:SmallG
 * @CreateTime:2023/7/24+9:44
 */

public class ArrayCopyDemo02 {
    public static void main(String[] args) {
        int[] arr1 = new int[10];
        Random random = new Random();
        //循环赋值
        for (int i = 0; i < arr1.length; i++) {
            arr1[i] = random.nextInt(100);
        }
        //打印数组  toString用字符串的形式输出数组
        System.out.println("数组中的数据为:" + Arrays.toString(arr1));
        //找出数组中的最大值
        int max = arr1[0];
        for (int i = 1; i < arr1.length; i++) {
            if (arr1[i] > max) {
                max = arr1[i];
            }
        }
        //数组扩容 返回的结果就是新数组
        int[] arr2 = Arrays.copyOf(arr1, 11);
        System.out.println("最大值为:" + max);
        //将源数组的最大值放在新数组的最后一位
        arr2[10] = max;
        //打印新数组长度
        System.out.println("新数组长度为:" + Arrays.toString(arr2));
    }
}

2、数组的排序

排序是数组中的一类算法,在面试的时候会很容易问到。

常用的排序算法有:插入排序,冒泡排序,快速排序等

冒泡排序

从数组的第一个元素开始,依次比较相邻两个元素的大小,如果前一个元素大于后一个元素,则交换它们的位置,直到整个数组排序完成。

/**
 * @document: 冒泡排序
 * @Author:SmallG
 * @CreateTime:2023/7/24+10:41
 */

public class BubbleSortDemo01 {
    public static void main(String[] args) {
        int[] array = {89, 50, 84, 57, 61, 20, 70};
        System.out.println("排序前的数组为:" + Arrays.toString(array));
        //冒泡排序:两两比较,满足条件,交换位置
        //外层循环控制几轮比较 几轮比较是数组的长度减1
        for (int i = 0; i < array.length - 1; i++) {
            //内层循环是每轮有几次比较
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    int t = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = t;
                }
            }
        }
        System.out.println("排序后的数组为:" + Arrays.toString(array));
    }
}

sort 排序

/**
 * @document: sort方法排序
 * @Author:SmallG
 * @CreateTime:2023/7/24+11:42
 */

public class ArraySortDemo {
    public static void main(String[] args) {
        int[] arr = {2, 4, 66, 12, 23, 44};
        //sort方法直接修改原始数据
        Arrays.sort(arr);
        System.out.println("排序结果:" + Arrays.toString(arr));
    }
}

3、字符串与字符数组

/**
 * @document: 字符串与字符串数组
 * @Author:SmallG
 * @CreateTime:2023/7/24+11:49
 */

public class StringArrayDemo {
    public static void main(String[] args) {
        String s1 = "hello";
        //把字符串转化为字符数组
        char[] charArray1 = s1.toCharArray();
        System.out.println(Arrays.toString(charArray1));

        //定义一个字符数组
        char[] charArray2 = {'H', 'e', 'l', 'l', 'o'};
        String s2 = new String(charArray2);// 把字符数组构建为一个字符串对象
        System.out.println(s2);
    }
}

二、软件开发管理

1、软件生命周期

传统软件生命周期分为:可行性分析、需求分析、软件设计、编码、软件测试、软件维护。

敏捷开发

以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。

2、Git使用实例

设置用户签名

git config --global user.name SmallG

设置邮箱

git config --global user.email 3048886530@qq.com

查看用户签名信息

$ cat ~/.gitconfig
[user]
        name = SmallG
        email = 3048886530@qq.com

三、练习

1、检查英文单词

/**
 * @document: 检查英文单词
 * @Author:SmallG
 * @CreateTime:2023/7/24+8:54 编写一个程序,接收用户在控制台输入的两个英文单词,判断其中一个单词的所有字符重新排列后,能否变成一个单词
 */
public class HomeWork01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //输入两个字符串
        String s1 = scanner.next();
        String s2 = scanner.next();
        //首先判断字符串的长度,如果不相等直接输出false
        if (s1.length() != s2.length()) {
            System.out.println("false");
        } else {
            //将字符串按照字符的形式存到数组中
            char[] c1 = s1.toCharArray();
            char[] c2 = s2.toCharArray();
            //用sort方法进行排序
            Arrays.sort(c1);
            Arrays.sort(c2);
            if (!Arrays.toString(c1).equals(Arrays.toString(c2))) {
                System.out.println("false");
            } else {
                System.out.println("true");
            }
        }
    }
}

2、计算数组中元素的距离

/**
 * @document: 计算数组中元素的距离
 * @Author:SmallG
 * @CreateTime:2023/7/24+11:25
 */

public class HomeWork02 {
    public static void main(String[] args) {
        //给定一个字符串数组strs
        //再给定2个字符串str1和str2
        //返回在str中str1与str2的最小距离
        //不存在返回-1
        //初始化数组strs
        String[] strs = {"abc", "cde", "bcd", "ac", "bcd", "ac"};
        Scanner scanner = new Scanner(System.in);
        //输入两个字符串
        String str1 = scanner.next();
        String str2 = scanner.next();
        //声明两个对象用于存储位置
        int index1 = -1;
        int index2 = -1;
        for (int i = 0; i < strs.length; i++) {
            if (strs[i].equals(str1) && index1 == -1) {
                index1 = i;
            } else if (strs[i].equals(str2) && index2 == -1) {
                index2 = i;
            }
        }
        if (index1 != -1 && index2 != -1) {
            System.out.println("最小距离为:"+Math.abs(index1 - index2));
        } else {
            System.out.println(-1);
        }
    }
}
最后修改:2023 年 07 月 24 日
如果觉得我的文章对你有用,请随意赞赏