java 练习题Word下载.docx
《java 练习题Word下载.docx》由会员分享,可在线阅读,更多相关《java 练习题Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
publicStringreplace(Stringstr);
用来将当前字符串对象与给定的字符串str连接起来。
replace()
replace(charoldchar,charnewchar)把字符串oldchar替换成newchar.
Substring()
Substring(intbegin,intstop)获取从begin位置到stop位置的子串
toUpperCase()
将字符串中所有字符变为大写字母
toLowerCase()
将字符串中所有字符变为小写字母
2.写出StringBuffer类的特点,构造函数及其他成员函数。
StringBuffer类的特点:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立。
StringBuffer的构造函数
StringBuffer()
系统为字符串分配16个字符大小的缓冲区
StringBuffer(intlen)
Len指明字符串缓冲区的长度
StringBuffer(Strings)
参数s是字符串的初始值,同时系统为字符串分配16个字符大小的缓冲区
StringBuffer类除了具有String类的函数外,新增的函数:
Capacity()
用来得到字符缓冲区的容量
append(stringstr)
在已有的字符末尾加上一个字符str
insert(intoffset,Stringstr)
在字符串offset处插入一个字符串str
setCharAt(intindex,charch)
用来设置指定索引index位置的字符值
3.写出java中数组的概念和定义,并说明java中数组类型与C++中的区别。
数组的概念:
数组是一种复合数据类型,也是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用统一的数组名和相应的下标来唯一地确定数组中的元素。
数组的定义:
一维数组的定义:
typeArrayName[];
二维数组:
typeArrayName[][].
与C++中的区别:
在Java中定义数组时并不为数组元素分配内存空间,定义之后经过初始化之后才能引用数组中的元素。
Java中还提供另外一种定义方式:
type[]ArrayName.
4.写出一维数组的定义格式和实例化方法。
定义格式:
typearrayName[]或是type[]arrayName.type(类型)可以是Java中任意的数据类型,包括复合数据类型。
实例化方法:
1、静态初始化:
typearrayName[]={elements1[,elements2.....]}
2、动态初始化:
(1)简单数据类型arrayName=newtype[arraySize];
例如:
intintArray[];
intArray=newint[5]
(2)复合数据类型首先为数组开辟每个元素的引用空间:
arrayName=newtype[arraySize]然后再为每个元素开辟内在空间:
arrayName[0]=newtype(paramList)...arrayName[arraySize-1]=newtype(paramList).
5.写出二维数组的定义格式和实例化方法。
typearrayName[][]或是type[][]arrayname
1、静态初始化例:
intintArray[][]={{1,2},{2,3}}
2、动态初始化
(1)直接为每一维分配内存空间例:
inta[][]=newint[2][3];
(2)从最高维开始,分别为每一维分配内存空间,格式如下:
arrayName=newtype[arrayLenth1][];
arrayName[0]=newtype[arrayLenth20]....
arrayName[arraylenth-1]=newtype[arrayenth2(n-1)]
实验:
第一题:
用数组实现一个char队列类(CharList),该类的构造函数传递一个int类型的参数,确定队列的大小。
成员方法包括put和get,队列为満时再put要提示“队列满,无法put”,队列为空时再get要提示“队列空,无法get”。
另写一个演示类(CharListDemo)测试该队列类,分别构造大小两个队列,大的容量为100个char, 小的容量为4个char。
用put操作将26个字母加入大队列,再用get操作取出并输出到屏幕;
将ZYXWV五个字母加入到小队列,再从队列中取出并输出。
classCharList{
intarraySize,i=0;
//arraySize表示数组的大小,i表示数组下标
chararray[];
//定义一个一维数组当作队列
CharList(intsz)//构造函数动态为数组初始化
{
arraySize=sz;
array=newchar[arraySize];
}
booleanput(charelement)//把字符存入数组中
{
if(i>
=arraySize)
{
System.out.println("
队列满,无法put"
);
returnfalse;
}
array[i]=element;
i++;
returntrue;
booleanget(chararray[])//把字符输出在屏幕上
intcnt=0;
for(inti=0;
i<
arraySize;
i++)
if(array[i]=='
'
)
{
System.out.println("
队列空,无法get"
returnfalse;
}
System.out.print(array[i]);
cnt++;
if(cnt%10==0)
System.out.println();
}
publicclassCharListDemo{//测试类
publicstaticvoidmain(Stringargs[])
CharLista=newCharList(100);
//为大队列分配100个空间
for(inti=0;
26;
a.put((char)('
A'
+i));
//调用put()函数,把“ABCD...”等输入到数组中
a.get(a.array);
//调用get()函数,输出“ABCDEFG....”
charch[]={'
Z'
'
Y'
X'
W'
V'
};
CharListb=newCharList(4);
//为小队列分配空间4个
4;
b.put(ch[i]);
//把ch[]输入到数组array.
b.get(b.array);
//输出ch[].
运行结果:
ABCDEFGHIJ
KLMNOPQRST
UVWXYZ
ZYXW
第二题
(1)下列哪个可以正确创建一个int类型的二维数组?
C、D
A.
inta[][]=newint[][];
B.
inta[10][10]=newint[][];
C.
inta[][]=newint[10][10];
D.
int[][]a=newint[10][10];
E.
int[]a[]=newint[10][10];
(2) 编译和运行下程序段,会有什么结果?
D
classArray{
publicstaticvoidmain(String[]args){
intlength=100;
int[]d=newint[length];
for(intindex=0;
index<
length;
index++)
System.out.println(d[index]);
}
A 代码不能编译,因为数组声明不正确;
B 代码不能编译,因为数组元素没有初始化;
C 在标准输出中显示数字0~99;
D 在标准输出中显示100个0;
第三题:
编写程序计算下列矩阵的乘积:
程序代码:
publicclassCh3_2{
inti,j,k;
inta[][]={{2,3,4},{7,8,9}};
intb[][]={{5,7,9,11},{6,8,19,14},{8,4,9,3}};
intc[][]=newint[2][4];
//用来表示a*b
intd[][]={{23,45},{78,22},{88,99},{43,66}};
inte[][]=newint[2][2];
//存放最终结果
for(i=0;
2;
for(j=0;
j<
j++)
{
for(k=0;
k<
3;
k++)
c[i][j]+=a[i][k]*b[k][j];
}
e[i][j]+=c[i][k]*d[k][j];
***resultMatrix***"
for(i=0;
for(j=0;
System.out.print(e[i][j]+"
"
System.out.println();
运算结果:
***resultMatrix***
1862819893
5052353813
第四题:
请从下面一段文字中,找出所有名称为“COM”的字符串并统计该字符串出现的次数,注意不要统计名称为“DCOM”的字符串。
“解决DCOM的问题主要是解决程序配置和部署的问题。
由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。
其他可能需要解决的问题包括程序和网络协议之间的安全机制。
因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。
”
方法一,程序代码:
publicclassCh3_3{
publicstaticvoidmain(String[]args)
Stringstr1="
解决DCOM的问题主要是解决程序配置和部署的问题。
"
;
Stringstr2="
COM"
Stringstr3="
DCOM"
intcnt1=0,cnt2=0,i=0;
//cnt1表示查询到COM的个数,cnt2表示查询到DCOM的个数
while(i<
str1.length())
if(str1.indexOf(str2,i)!
=-1)
i=str1.indexOf(str2,i);
i=i+str2.length();
cnt1++;
else
break;
i=0;
if(str1.indexOf(str3,i)!
i=str1.indexOf(str3,i);
i=i+str3.length();
cnt2++;
System.out.println("
COM的个数为:
+(cnt1-cnt2));
//cnt1-cnt2表示不包括DCOM的COM的个数
5
方法二,程序代码:
importjava.util.regex.*;
publicclassch3_5{
解决DCOM的问题主要是解决程序配置和部署的问题。
Patternp1=Ppile(str2);
//编译成模式
Stringr1[]=p1.split(str1);
//以COM为标志分割
Patternp2=Ppile(str3);
Stringr2[]=p2.split(str1);
//以DCOM为标志分割
+(r1.length-r2.length));
//以COM为标志的分割段数与以DCOM为标志分割的段数之差就是COM出现的次数;
编译结果:
第五题:
请从下面一段文字中,找出所有名称为“COM”的字符串并将它替换为“DCOM”,注意名称本来为“DCOM”的字符串不要改变。
“解决DCOM的问题主要是解决程序配置和部署的问题。
importjava.lang.*;
publicclassCh3_5{
publicstaticvoidmain(String[]args)
Stringstr1="
Stringstr2="
Stringstr3="
Stringstr6="
DDCOM"
Stringstr4=str1.replaceAll(str2,str3);
//调用replace函数将所有的COM换成DCOM
Stringstr5=str4.replaceAll(str6,str3);
//调用replace函数将DDCOM换成DCOM
System.out.println(str5);
//输出替换之后的字符串
由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用DCOM时要大。
因为在默认情况下DCOM安全是打开的,所以只要试图访问DCOM对象的DCOM程序或客户程序启动DCOM对象,就会开始进行安全检查。
第六题:
请在下面一段文字后面,追加一段文字;
然后再将所有的大写的英文字母变成小写形式,最后显示到屏幕上。
(要求使用StringBuffer类)
初始的一段文字:
由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。
追加的一段文字:
“因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。
”
因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。
StringBuffers1=newStringBuffer(str1.toLowerCase());
//将转化为小写的字符串定义为StringBuffer类
StringBuffers2=newStringBuffer(str2.toLowerCase());
s1.append(s2);
//将s2加到s1的尾部
System.out.println(s1);
//输出字符串
解决dcom的问题主要是解决程序配置和部署的问题。
由于dcom涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用com时要大。
因为在默认情况下com安全是打开的,所以只要试图访问com对象的com程序或客户程序启动com对象,就会开始进行安全检查。