????????数组是指可以同时存放固定长度的同一类型的数据。
????????数组的声明有三种方式,具体如下:
/**
* 声明数组的第一种方式
* cityArray:数组名,注意:不包括[]
*/
@Test
public void declareArrayTest1() {
String cityArray[] = new String[4];
cityArray[0] = "北京";
cityArray[1] = "上海";
cityArray[2] = "广州";
cityArray[3] = "深圳";
System.out.println(cityArray[0]);
}
/**
* 声明数组的第二种方式
* cityArray:数组名,注意:不包括[]
*/
@Test
public void declareArrayTest2() {
String[] cityArray = new String[4];
cityArray[0] = "杭州";
cityArray[1] = "武汉";
cityArray[2] = "南京";
cityArray[3] = "西安";
System.out.println(cityArray[0]);
}
/**
* 声明数组的第三种方式
* cityArray:数组名,注意:不包括[]
*/
@Test
public void declareArrayTest3() {
String[] cityArray = {"金华","丽水","衢州","舟山"};
System.out.println(cityArray[0]);
}
/**
* 数组常见操作
* 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));
}
????????String修改字符串时,是在内存中创建一个新的字符串,并把新的地址指向给String对象,比较浪费空间。StringBuffer和StringBuilder是在初始时创建一个容器,当修改的时候只是修改容器中的内容,而不是创建一个新的容器,所以如果业务需要经常变更字符串的话,最好不要使用String。
????????StringBuffer是线程安全的,部分源码如下:
? ? ? ? StringBuilder是线程不安全的,部分源码如下: