一、操作数组
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);
}
}
}