Java程序设计语言集合类与泛型Word格式.docx
《Java程序设计语言集合类与泛型Word格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计语言集合类与泛型Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
创建或初始化String对象的方法如下:
(12)String类的主要成员方法列于下表:
方法
描述
(13)Array是位于包中的标准类,其中包含了多个静态成员方法,通过它们可以完成数组的各种操作。
Array的常用静态成员方法列于下表:
功能描述
2、名词:
(1)简单类型:
(2)复合类型型:
(3)数组:
(4)一维数组:
(5)数组的初始化:
(6)数组长度:
(7)空数组:
(8)字符串:
二、边学边练
第1部分:
数组
〖任务1〗:
完成教材【例3-1】的程序,分析运行结果,阅读教材相关内容。
〖任务2〗:
完成教材【例3-2】的程序,分析运行结果,阅读教材相关内容。
〖任务3〗:
完成教材【例3-3】的程序,分析运行结果,阅读教材相关内容。
第2部分:
字符串
〖任务4〗:
完成教材【例3-4】的程序,分析运行结果,阅读教材相关内容。
第3部分:
Array
〖任务5〗:
完成教材【例3-5】的程序,分析运行结果,阅读教材相关内容。
三、精讲精记
一、数组
1、数组的概念
数组是一个最常用的复合数据结构,一个数组中可以存放多个同类型的数据。
数组分为一维数组,二维数组和多维数组。
Java语言中的数组是引用类型,定义一个数组变量,实际上是定义一个数组的引用。
Java语言中的二维数组的各行的元素数可以不同。
2、一维数组
(1)定义数组变量:
数组元素类型[]变量;
数组元素类型变量[];
(2)数组的创建:
new数组元素类型[元素个数];
(3)数组的初始化。
数组元素类型[]变量={元素值列表};
3、二维数组
数组元素类型[][]变量;
数组元素类型变量[][];
new数组元素类型[数组的行数][数组的列数];
new数组元素类型[数组的行数][];
数组元素类型[]变量=
{{第0行元素值列表},{第1行元素值列表},……,{第n-1行元素值列表}};
3、多维数组
基本思路:
数组的每个元素都可以是一个数组。
二、字符串
1、字符串的概念
字符串一个字符串序列,字符串中的字符个数称为字符串的长度。
Java中的字符串是类(java.lang包中),分为两种字符串:
不可变字符串String,线程安全可变字符串StringBuffer,线程不安全可变字符串StringBuilder。
字符串变量是字符串的引用。
2、String对象
(1)字符串常量:
用双引号引起来的字符串序列。
如:
"
good"
(2)字符串变量的定义:
String变量;
(3)创字符串对象:
newString(字符串常量);
(4)给字符串变量赋值:
变量=newString(字符串常量);
变量=字符串常量;
3、String类提供的方法
intlengh()
返回字串常长度
charcharAt(intindex)
返回字符串中指定位置的字符
booleanequals(ObjectothObject)
判断当前字符串与otherObject是否相等。
intcopareTo(StringothString)
当前字符串与otherString进行比较,如大于则返回1,小于则返回-1,相等返回0。
intindex(charch)
返回字符ch在字符串中的位置
intindexOf(Stringstr)
返回字符串str在字符串中的位置
Stringsubstring(intbegin)
Stringsubstring(intbegin,intend)
返回从begin开始到字符串结束的子字符串
返回从begin开始到end结束的子字符串
Stringconcat(Stringstr)
返回当前字符串与字符串str连接的字符串
Stringreplace(charoldChar,charnewChar)
将当前字符串中的oldChar替换为newChar返回
StringtoLowerCase()
将当前字符串中字母转化为小写字符后返回
StringtoUpperCase()
将当前字符串中字母转化为大写字符后返回
StringvalueOf(Objectobj)
StringvalueOf(booleanb)
StringvalueOf(charc)
StringvalueOf(inti)
StringvalueOf(longl)
StringvalueOf(floatf)
StringvalueOf(doubled)
把各种类型的值转换为字符串
三、Arrays类
Arrays类是JavaAPI中提供的标准类,在java.util包中。
Arrays类中提供了多个静态方法,可直接实现数组的排序、搜索等数组的操作。
1、数组的排序
voidArrays.sort(elementType[]a);
2、数组的搜索(二分法)
intArrays.binarySearch(elementType[]a,elementTypev)
3、数组的复制
elementType[]Arrays.copyOf(elementType[]original,intnewLength)
4、数组的填充
voidArrays.fill(elementType[]original,elementTypev)
5、数组的比较
booleanArrays.equals(elementType[]a,elementType[]b)
四、完善调试
1、任务一:
设计一个程序,从键盘上输入n个整数,计算它们的最大值、最小值及平均值。
再计算大于平均值的数的个数和小于平均值的数的个数。
import;
publicclassMyNumber{
main(){
Scannerin=;
System.out.print("
请输入整数的个数:
);
intn=;
int[]data=;
//声明、创建存放n个整数的数组
intmax=0,min=0;
intsum=0,aver=0;
intlarge=0,smaller=0;
for(;
;
){
System.out.print("
\n请输入第"
++"
个整数:
;
if(i==0){
;
}else{
if(data[i]>
max){
;
}
if(data[i]<
min){
}
sum+=;
}
aver=;
if(data[i]>
aver){
if(data[i]<
}
\n输入的"
+n+"
for(inti=0;
i<
n;
i++){
if(i!
=n-1){
System.out.print(+"
、"
);
System.out.println();
System.out.printf("
最大数为:
%d,最小数为:
%d,平均数为:
%d\n"
max,min,aver);
大于平均数的数的个数为:
%d,小于平均数的数的个数为:
large,smaller);
}
}
2、任务二:
设计一个Java程序,从键盘上输入一句英语。
统计其中单词的个数和每个字母出现的频率。
publicclassSentence{
publicstaticvoid(String[]args){
=newScanner(System.in);
请输入一句英语:
Stringsentence=;
intwordNumber=0;
intletterNumber=0;
int[]letterFrequency=newint[26];
String[]words=sentence.split("
[^a-zA-Z]"
wordNumber=words.length;
for(intj=0;
j<
j++){
letterNumber++;
charletter=words[i].;
letter=Character.toLowerCase(letter);
intindex=(int)letter-97;
letterFrequency[]++;
System.out.println("
各字母出现的频率:
System.out.printf("
%c:
%f\n"
,);
3、任务三:
设计一个Java程序,从键盘上输入一个n维方阵,输出这个方阵。
对这个方阵进行转置操作,输出转置操作后的结果。
importjava.util.Scanner;
publicclassMatrix{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
请输入方阵的维数:
intn=in.nextInt();
int[][]matrix=newint[n][n];
System.out.print("
+(i+1)+"
行第"
+(j+1)+"
列:
matrix[i][j]=in.nextInt();
System.out.println("
\n输入的原方阵:
for(inti=0;
System.out.printf("
%3d"
matrix[i][j]);
System.out.println();
i;
inttemp=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=temp;
}
\n转置操作后的方阵:
五、项目实战
写一个学生成绩管理的简易程序,要求如下:
1、程序提供如下功能菜单:
2、如果选择菜单“1”,则先提示输入学生人数,再逐一输入每个学生的姓名、语文成绩、数学成绩、英语成绩。
成绩输入完毕后,呈现功能菜单。
3、如果选择菜单“2”,则逐一输出每个学生的姓名、语文成绩、数学成绩、英语成绩、总成绩、平均成绩。
4、如果选择菜单“0”,程序输出:
结束程序运行。
5、建议用一个一维字符串数组存放全体学生的姓名,用一个二维float数组存放各同学的语文成绩、数学成绩、英语成绩,总成绩和平均成绩计算获取。
程序的源代码如下:
六、课后练习
一、选择题
1、String、StingBuffer和StringBuilder都是______类,都不能被继承。
A、static
B、abstract、C、final
D、private
2、下列程序的功能是统计字符串中"
array"
的个数,在程序的空白处应填入的正确选项是
public
class
FindKeyWords{
static
void
main(sring[]
args){
sting
text=
An
array
is
a
data
structur
that
stores
collection
of"
+
values
of
the
same
type
.
You
access
each
individual
value"
+
through
an
integer
index
For
example,if
inergers,
then
a[i]
ith
in
array."
;
int
arrayCount
=0;
=
-1;
Sting
arrarStr
="
text.indexof(arrayStr);
while(index
0)
{
++arrayCount;
+=
arrayStr.length();
text.indexof(arrayStr,index);
}
System.out.println(“the
text
contains”
“arrays”);
A、<
B、=
C、<
D、>
=
3、给出下列代码,则数组初始化中哪项是不正确的?
Byte[]
array1,array2[];
byte
array3[][];
byte[][]
array4;
A、array2
array1
B、array2=array3
C、array2=array4D、array3=array4
4、顺序执行下列程序语句后,则b的值是
Stringa="
Hello"
Stringb=a.substring(0,2);
A、HelloB、helloC、HelD、null
5、执行完以下代码int[]x=newint[10];
后,以下哪项说明是正确的
A、x[9]为0B、x[9]未定义C、x[10]为0D、x[0]为空
6、对数组的定义及初始化不正确的方法是:
A、intarray[];
B、intarray[8];
C、int[]array=newint[8];
D、intarray[]=newint[8];
7、关于length()这个方法的表述正确的是哪个?
A、数组有length()这个方法,String也有length()这个方法。
B、数组有length()有这个方法,String没有length()这个方法。
C、数组没有length()这个方法,String有length()这个方法。
D、数组没有length()这个方法,String也没有length()这个方法。
8、运行下面程序段的结果是()。
publicclassMyMain{
publicstaticvoidmain(Stringargs){
HelloJava"
}
A、正常输出HelloJavaB、编译时出错
C、运行时出错D、以上答案都不对
9、编译并运行下述程序段的结果是()。
publicclassTest{
publicstaticvoidmain(Stringargv[]){
int[]count=newint[4];
System.out.println(count[4]);
A、编译时错误B、运行时错误C、输出0D、输出null
10、下面哪个语句(初始化数组)是不正确的()。
A、
x[]
{1,2,3};
B、
x[3]
C、
int[]
x
D、
new
int[]{1,2,3};
11、运行下面程序段的结果是()。
int[][]data={{1,2,3,4,5},{11,22,33,44,55},{111,222,333,444,555}};
data.length;
if(i%2==0){
System.out.println(data[i][4]+"
"
A、5555B、555D、55
二、填空题
1、设有数组定义:
inta[][]={11,22,33,44,55,66,77,88,99};
则执行下列几个语句后的输出结果是【1】。
for(inti=0i<
a.lengthi++)
if(a[i]%3==0)System.out.println(a[i]+"
2、下面程序的运行结果是【2】。
importjava.io.*
publicclassABC{
publicstaticvoidmain(String[]args){
i<
=a.length/2;
i++)
System.out.print(a[i]+a[a.length-i-1]+"
System.out.println();
3、请完成下列程序,实现随机抽取数据元素的功能。
publicclassChouti{
String[]timu={"
天文"
"
地理"
历史"
文学"
红楼"
三国"
};
intindex=(int)(timu.leng*Math.random());
System.out.print("
你抽的题目领域是"
+【3】[index]+"
。
4、有字符串s1,则其长度为【4】。
5、有数组array,则其长度为【5】。
6、有如下代码:
Strings1,s2;
s1="
abcd"
s2="
则s1.equals(s2)的值为【6】。
7、有如下代码:
s2=s1;
则s1.equals(s2)的值为【7】。
8、有如下代码: