java 练习题.docx

上传人:b****5 文档编号:3436232 上传时间:2022-11-23 格式:DOCX 页数:13 大小:26.96KB
下载 相关 举报
java 练习题.docx_第1页
第1页 / 共13页
java 练习题.docx_第2页
第2页 / 共13页
java 练习题.docx_第3页
第3页 / 共13页
java 练习题.docx_第4页
第4页 / 共13页
java 练习题.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

java 练习题.docx

《java 练习题.docx》由会员分享,可在线阅读,更多相关《java 练习题.docx(13页珍藏版)》请在冰豆网上搜索。

java 练习题.docx

java练习题

学习使人进步

问答:

1.写出String类的特点,构造函数及其他成员函数。

并对各函数的功能进行详细说明。

答:

String类的特点:

为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.

String类的构造函数和其他函数

String(charchars[])

从字符数组生成字符串

String(charchars[],intstartIndex,intnumChars)

从字符数组指定的字符生成字符串StartIndex和numChars指明字符串在数组中的起始索引以及它包含的字符数。

String((byteascii[],inthiByte)

从字节数组生成字符串,hiByte用来指定每个字符的高位字节。

String(byteascii[],inthyByte,intstartIndex,intnumChars)

从字节数组指定字符数生成字符串,hiByte用来指定每个字符的高位字节。

StartIndex和numChars指明字符串在数组中的起始索引以及它包含的字符数。

length()

返回字符串的字符个数

charAt()

charAt(intindex)返回字符串中index位置上的字符

indexOf()和lastIndexOf

在给定的字符串中检索特定字符和子串;

(1)indexOf(intch),lastIndexOf(intch)分别返回ch在字符串中出现的第一个位置和最后一个位置。

(2)indexOf(stringstr),lastIndexOf(Stringstr)分别返回子串str在字符串中出现的第一个位置和最后一个位置。

(3)indexOf(intch,intfromIndex),lastIndexOf(intch,intfromInex)分别返回字符ch在字符串中位置fromIndex以后出现的始末位置。

(4)indexOf(Stringstr,intfromIndex),lastIndexOf(Stringstr,intfromInex)分别返回字符ch在字符串中位置fromIndex以后出现的始末位置。

getChars()

从字符串中提取多个字符,publicvoidgetChars(intsrcbegint,intend,charc[],intoffset)该方法的作用是将当前字符串从srcbegint到end-1位置上的字符复制到字符数组c中,并从c的offset处开始存放.

getBytes()

与getChars()类似,区别在于字符串的字符均用8位表示。

concat()

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

{

if(array[i]=='')

{

System.out.println("队列空,无法get");

returnfalse;

}

System.out.print(array[i]);

cnt++;

if(cnt%10==0)

System.out.println();

}

returntrue;

}

}

publicclassCharListDemo{//测试类

publicstaticvoidmain(Stringargs[])

{

CharLista=newCharList(100);//为大队列分配100个空间

for(inti=0;i<26;i++)

{

a.put((char)('A'+i));//调用put()函数,把“ABCD...”等输入到数组中

}

a.get(a.array);//调用get()函数,输出“ABCDEFG....”

charch[]={'Z','Y','X','W','V'};

CharListb=newCharList(4);//为小队列分配空间4个

for(inti=0;i<4;i++)

{

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

System.out.println(d[index]);

}

}

A 代码不能编译,因为数组声明不正确;

B 代码不能编译,因为数组元素没有初始化;

C 在标准输出中显示数字0~99;

D 在标准输出中显示100个0;

第三题:

编写程序计算下列矩阵的乘积:

程序代码:

publicclassCh3_2{

publicstaticvoidmain(Stringargs[])

{

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;i<2;i++)

{

for(j=0;j<4;j++)

{

for(k=0;k<3;k++)

c[i][j]+=a[i][k]*b[k][j];

}

}

for(i=0;i<2;i++)

{

for(j=0;j<2;j++)

{

for(k=0;k<4;k++)

e[i][j]+=c[i][k]*d[k][j];

}

}

System.out.println("***resultMatrix***");

for(i=0;i<2;i++)

{

for(j=0;j<2;j++)

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的问题主要是解决程序配置和部署的问题。

由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。

";

Stringstr2="COM";

Stringstr3="DCOM";

intcnt1=0,cnt2=0,i=0;//cnt1表示查询到COM的个数,cnt2表示查询到DCOM的个数

while(i

{

if(str1.indexOf(str2,i)!

=-1)

{

i=str1.indexOf(str2,i);

i=i+str2.length();

cnt1++;

}

else

break;

}

i=0;

while(i

{

if(str1.indexOf(str3,i)!

=-1)

{

i=str1.indexOf(str3,i);

i=i+str3.length();

cnt2++;

}

else

break;

}

System.out.println("COM的个数为:

"+(cnt1-cnt2));//cnt1-cnt2表示不包括DCOM的COM的个数

}

}

运行结果:

COM的个数为:

5

方法二,程序代码:

importjava.util.regex.*;

publicclassch3_5{

publicstaticvoidmain(Stringargs[])

{

Stringstr1="解决DCOM的问题主要是解决程序配置和部署的问题。

由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。

";

Stringstr2="COM";

Stringstr3="DCOM";

Patternp1=Ppile(str2);//编译成模式

Stringr1[]=p1.split(str1);//以COM为标志分割

Patternp2=Ppile(str3);

Stringr2[]=p2.split(str1);//以DCOM为标志分割

System.out.println("COM的个数为:

"+(r1.length-r2.length));//以COM为标志的分割段数与以DCOM为标志分割的段数之差就是COM出现的次数;

}

}

编译结果:

COM的个数为:

5

第五题:

请从下面一段文字中,找出所有名称为“COM”的字符串并将它替换为“DCOM”,注意名称本来为“DCOM”的字符串不要改变。

“解决DCOM的问题主要是解决程序配置和部署的问题。

由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。

程序代码:

importjava.lang.*;

publicclassCh3_5{

publicstaticvoidmain(String[]args)

{

Stringstr1="解决DCOM的问题主要是解决程序配置和部署的问题。

由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。

";

Stringstr2="COM";

Stringstr3="DCOM";

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程序或客户程序启动DCOM对象,就会开始进行安全检查。

第六题:

请在下面一段文字后面,追加一段文字;然后再将所有的大写的英文字母变成小写形式,最后显示到屏幕上。

(要求使用StringBuffer类)

初始的一段文字:

“解决DCOM的问题主要是解决程序配置和部署的问题。

由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

追加的一段文字:

“因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。

程序代码:

importjava.lang.*;

publicclassCh3_5{

publicstaticvoidmain(String[]args)

{

Stringstr1="解决DCOM的问题主要是解决程序配置和部署的问题。

由于DCOM涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用COM时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

";

Stringstr2="因为在默认情况下COM安全是打开的,所以只要试图访问COM对象的COM程序或客户程序启动COM对象,就会开始进行安全检查。

";

StringBuffers1=newStringBuffer(str1.toLowerCase());//将转化为小写的字符串定义为StringBuffer类

StringBuffers2=newStringBuffer(str2.toLowerCase());//将转化为小写的字符串定义为StringBuffer类

s1.append(s2);//将s2加到s1的尾部

System.out.println(s1);//输出字符串

}

}

运行结果:

解决dcom的问题主要是解决程序配置和部署的问题。

由于dcom涉及到在多台计算机上运行的程序,所以潜在的问题比在单机上使用com时要大。

其他可能需要解决的问题包括程序和网络协议之间的安全机制。

因为在默认情况下com安全是打开的,所以只要试图访问com对象的com程序或客户程序启动com对象,就会开始进行安全检查。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1