系列十二、数组

发布时间:2024年01月09日

一、数组

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是线程不安全的,部分源码如下:

文章来源:https://blog.csdn.net/HelloWorld20161112/article/details/135484062
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。