一、数组
1.1、概述
数组是指可以同时存放固定长度的同一类型的数据。
1.2、数组的声明
数组的声明有三种方式,具体如下:
1.2.1、方式一
/**
 * 声明数组的第一种方式
 *      cityArray:数组名,注意:不包括[]
 */
@Test
public void declareArrayTest1() {
	String cityArray[] = new String[4];
	cityArray[0] = "北京";
	cityArray[1] = "上海";
	cityArray[2] = "广州";
	cityArray[3] = "深圳";
	System.out.println(cityArray[0]);
}
1.2.2、方式二
/**
 * 声明数组的第二种方式
 *      cityArray:数组名,注意:不包括[]
 */
@Test
public void declareArrayTest2() {
	String[] cityArray = new String[4];
	cityArray[0] = "杭州";
	cityArray[1] = "武汉";
	cityArray[2] = "南京";
	cityArray[3] = "西安";
	System.out.println(cityArray[0]);
}1.2.3、方式三
/**
 * 声明数组的第三种方式
 *      cityArray:数组名,注意:不包括[]
 */
@Test
public void declareArrayTest3() {
	String[] cityArray = {"金华","丽水","衢州","舟山"};
	System.out.println(cityArray[0]);
}
1.3、数组常见操作
/**
 * 数组常见操作
 * 1、排序
 *      Arrays.sort()可以对数字、字符进行排序,但是不能对中文字符排序
 * 2、判断某个数是否在数组中
 * 3、判断两个数组是否相同
 *      Arrays.equals(arr1,arr2):返回boolean类型,如果为true则代表两个数组相等,否则不相等
 * 4、将数组转换成人可以看懂的数据
 *      Arrays.toString(array)
 */
@Test
public void arraySortTest() {
	int[] scoreArray = {65, 36, 98, 85, 72, 99, 100};
	System.out.println("==================================================");
	StringBuilder sbBefore = new StringBuilder();
	StringBuilder sbAfter = new StringBuilder();
	for (int i : scoreArray) {
		sbBefore.append(i + "\t");
	}
	System.out.println("排序前:" + sbBefore);
	Arrays.sort(scoreArray);
	for (int i : scoreArray) {
		sbAfter.append(i + "\t");
	}
	System.out.println("排序后:" + sbAfter);
	System.out.println("==================================================");
	int existFlag = Arrays.binarySearch(scoreArray, 85);
	System.out.println("existFlag = " + existFlag); // existFlag = 3,如果存在返回的是索引所在位置,索引从0开始
	System.out.println("==================================================");
	int[] arr1 = {1, 2, 3};
	int[] arr2 = {1, 2, 3};
	Arrays.equals(arr1, arr2);
	System.out.println("==================================================");
	String[] cityArray = {"金华", "丽水", "衢州", "舟山"};
	System.out.println(cityArray);
	System.out.println(Arrays.toString(cityArray));
}
1.4、String vs StringBuffer vs StringBuilder
1.4.1、概述
String修改字符串时,是在内存中创建一个新的字符串,并把新的地址指向给String对象,比较浪费空间。StringBuffer和StringBuilder是在初始时创建一个容器,当修改的时候只是修改容器中的内容,而不是创建一个新的容器,所以如果业务需要经常变更字符串的话,最好不要使用String。
1.4.2、StringBuffer vs StringBuilder
StringBuffer是线程安全的,部分源码如下:
StringBuilder是线程不安全的,部分源码如下:

















![[足式机器人]Part2 Dr. CAN学习笔记 - Ch02动态系统建模与分析](https://img-blog.csdnimg.cn/direct/630219cc3a314904ba754366a8add31b.png#pic_center)




