一、实验目的
-
掌握数组的定义、初始化及常见操作,如遍历、查找、排序等。
-
理解字符串的不可变性,熟悉
String
、StringBuilder
、StringBuffer
的用法及差异。 -
验证数组和字符串在Java中常用的方法,理解它们在实际编程中的应用场景。
二、实验学时
2学时
三、实验类型
验证性
四、实验需求
1、硬件
每人配备计算机1台,建议优先使用个人计算机开展实验。
2、软件
安装IntelliJ IDEA,以及Java运行所需要的相关基础环境。
3、网络
本地主机能够访问互联网和实验中心网络。
4、工具
无。
五、实验任务
-
定义和操作一维数组,进行排序、查找等操作。
-
使用二维数组处理简单矩阵的计算。
-
练习字符串的连接、替换、比较,了解
String
和StringBuilder
之间的性能差异。 -
结合数组和字符串,完成一个简单的编程任务,如统计字符串中的字符频率。
六、实验内容及步骤
实验1:数组的定义和操作
步骤1、定义和初始化一维数组
-
定义一个包含10个整数的数组,并手动初始化其中的值。
-
打印数组中的所有元素,使用两种方式:
-
for
循环 -
增强型
for
循环
步骤2、数组的排序与查找
- 对数组进行升序排序,要求使用两种方法实现:
-
手动编写冒泡排序算法。
-
使用
Arrays.sort()
方法。
- 在排序后的数组中查找某个特定的数字,返回其索引位置。使用:
-
for
循环手动查找。 -
Arrays.binarySearch()
方法。
步骤3、定义和操作二维数组
-
定义一个3x3的二维数组,并手动初始化每个元素的值。
-
打印二维数组的所有元素,使用双重
for
循环。 -
计算二维数组中所有元素的总和。
实验2:数组的定义和操作
步骤1、字符串的定义和基本方法
-
定义两个字符串,分别为
str1 = "Hello"
和str2 = "World"
。 -
使用
+
运算符和concat()
方法将两个字符串拼接在一起,生成"HelloWorld"
,并打印结果。 -
比较两个字符串,判断它们是否相等,使用
equals()
和==
。 -
获取拼接后的字符串的长度,使用
length()
方法。
步骤2、字符串的常见操作
-
将拼接后的字符串全部转换为大写字母,使用
toUpperCase()
方法。 -
替换字符串中的某个字符,将
"HelloWorld"
中的'o'
替换为'X'
,使用replace()
方法。 -
截取字符串中的一部分,提取
"HelloWorld"
中的"World"
,使用substring()
方法。
实验3:String
与StringBuilder
的性能对比
步骤1、字符串与StringBuilder
的区别
-
使用普通的
String
对象进行字符串连接操作,定义一个for
循环,循环1000次,每次将字符串"a"
附加到原有字符串上。 -
使用
StringBuilder
进行同样的操作,比较两者的执行时间。
步骤2、观察并记录两种方法的时间差异,理解String
的不可变性如何影响性能。
代码示例
public class StringPerformanceTest {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 使用String进行字符串拼接
String str = "";
for (int i = 0; i < 1000; i++) {
str += "a";
}
long endTime = System.currentTimeMillis();
System.out.println("使用String的时间: " + (endTime - startTime) + " ms");
// 使用StringBuilder进行字符串拼接
startTime = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append("a");
}
endTime = System.currentTimeMillis();
System.out.println("使用StringBuilder的时间: " + (endTime - startTime) + " ms");
}
}
实验4:字符串与数组的结合
步骤1、统计字符串中每个字符出现的次数
-
输入一个字符串,统计其中每个字符出现的次数,并输出结果。
-
提示:可以使用一个
int[]
数组,数组的下标表示字符的ASCII码,数组的值表示该字符出现的次数。
步骤2、统计字符串中每个字符出现的次数
在程序中输入不同的字符串,验证输出结果的正确性。
代码示例
public class CharFrequency {
public static void main(String[] args) {
String input = "hello world";
int[] freq = new int[128]; // 假设只包含ASCII字符
for (char c : input.toCharArray()) {
freq[c]++;
}
for (int i = 0; i < freq.length; i++) {
if (freq[i] > 0) {
System.out.println((char) i + ": " + freq[i]);
}
}
}
}
七、实验考核
本实验考核采用【实验随堂查】方式开展。
每个实验完成后,在实验课上通过现场演示的方式向实验指导教师进行汇报,并完成现场问答交流。
每个实验考核满分100分,其中实验成果汇报60分,现场提问交流40分。
实验考核流程:
(1)学生演示汇报实验内容的完成情况,实验指导老师现场打分。
(2)指导老师结合实验内容进行提问,每位学生提问2-3个问题,根据回答的情况现场打分。
(3)实验考核结束后,进行公布成绩。