java数组与字符串.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ex3:数组和字符串
1、假设s1,s2,s3,s4是四个字符串,其值如下:(25分)
String s1=“Welcome to Java”
String s2=s1
String s3=new String(“welcome to java”);
String s4=“welcome to java”
下面表达式的结果是什么?
(1)s1= =s2; 结果:true
(2)s2= =s2; 结果:true
(3)s1.equal(s2); 结果:true
(4)s2.equal(s3); 结果:false
(5)pareTo(s2); 结果:0
(6)pareTo(s3); 结果:-32
(7)s1= =s4; 结果:false
(8)s1.charAt(0); 结果:W
(9)s1.indexof(‘j’); 结果:11
(10)s1.indexof(“to”); 结果:8
(11)stindexof(‘a’); 结果:14
(12)stindexof(“o”,15); 结果:9
(13)s1.length() 结果:15
(14)s1.substring(5) 结果:me to Java
(15)s1.substring(5,11) 结果:me to J
(16)s1.startwith(“wel”) 结果:false
(17)s1.ednwith(“Java”) 结果:true
(18)s1.toLowerCase() 结果:welcome to java
(19)s1.toUpperCase() 结果:WELCOME TO JA V A
(20)“Welcom”.trim() 结果:Welcome
(21)s1.replace(‘o’, ‘T’) 结果:WelcTme tT Java
(22)s1.replaceAll(‘o’, ‘T’) 结果:WelcTme tT Java
(23)s1.replaceFirst(‘o’, ‘T’) 结果:WelcTme to Java
(24)s1.toCharArray() 结果:char []s1={‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’‘,’t’,’o’, ‘‘,’J’,’a;,’v’,’a’} 为了创建一个字符串“Welcome to Java”,可能会用到如下所示的语句:
String s=”Welcome to Java”;
或者
String s=new String(“Welcome to Java”);
哪个语句更好?为什么?
解:第一个语句。因为字符串使用非常频繁第一种比较简化,而第二种比较繁琐。
2、假设s1和s2是两个字符串,下面哪些语句或表达式是错误的?(9分)
(1)String s=new String(“new string”);
(2)String s3=s1+s2;
(3)String s3=s1-s2;
(4)s1==s2;
(5)s1>=s2;
(6)pareTo(s2);
(7)int i=s1.length();
(8)char c=s1(0);
(9)char c=s1.charAt(s1.length());
解:(3)(4)(5)(9)是错误的
3、假设s1是“Welcome”而s2是“welcome”为下面的陈述编写代码:(18分)
(1)检查s1和s2是否相等,然后将结果赋值给一个布尔变量isEqual。
isEqual=s1.equalsTo(s2)
(2)检查在忽略大小写的情况下s1和s2是否相等,然后将结果赋值给一个布尔变量isEqual。
isEqual=s1.equalsTo(s2)
(3)比较s1和s2,然后将结果赋值给一个整型值x。
x=pareTo(s2)
(4)在忽略大小写的情况下比较s1和s2,然后将结果赋值给一个整型值x。
x=pareToIgnoreCase(s2)
(5)检查s1是否有前缀“AAA”,然后将结果赋值给一个布尔变量b。
b=s1.startwith(“AAAl”)
(6)检查s1是否有后缀“AAA”,然后将结果赋值给一个布尔变量b。
b=s1.ednwith(“AAA”)
(7)将s1的长度赋值给一个字符型变量x。
x=String.valueOf(s1.length())
(8)将s1的第一个字符赋值给一个字符型变量x。
x=s1.charAt(0)
(9)创建一个新字符串s3,它是s1和s2的组合。
new String s3=s1+s2
(10) 创建一个s1的子串,下标从1开始。
String s=s1.substring(1)
(11) 创建一个s1的子串,下标从1到4。
String s=s1.substring(1,4)
(12)创建一个新字符串s3,它将s1转换为小写。
new String s3=s1.toLowerCase()
(13)创建一个新字符串s3,它将s1转换为大写。
new String s3=s1.toUpperCase()
(14)创建一个新字符串s3,它将s1的两端空格去掉。
new String s3=s1..trim()
(15)用E替换s1中所有出现字符e的地方,然后将新字符串赋值给s3。
s3=s1.replace(‘e’, ‘E’)
(16) 将“Welcome to Java and HTML”按空格分隔为一个数组tokens。
String []tokens=“Welcome to Java and HTML”.split()
(17)将s1中字符e第一次出现的下标赋值给一个int型变量x。
x=s1.indexof(‘e’);
(18)将s1中字符串abc最后一次出现的下标赋值给一个int型变量x。
x=stIndexof(“abc”);
4、假设给出如下所示的s1和s2:(12分)
StringBuilder s1=new StringBuilder(“Java”);
StringBuilder s2=new StringBuilder(“HTML”);
显示执行每条语句之后s1的结果。假定这些表达式都是相互独立的。
(1)s1.append(“is fun”); 结果:Java is fun
(2)s1.append(s2); 结果:Java HTML
(3)s1.insert(2,“is fun”); 结果:Javis funa
(4)s1.insert(1,s2); 结果:JaHTMLva
(5)s1.charAt(2); 结果:v
(6)s1.length(); 结果:4
(7)s1.deleteCharAt(3); 结果:Jav
(8)s1.delete(1,3); 结果:Ja
(9)s1.reverse(); 结果:avaJ
(10)s1.replace(1,3,“Computer”); 结果:JComputer
(11)s1.subString(1.3); 结果:av
(12)s1.subString(2); 结果:va
5、指出下列语句是对还是错?(4分)
(1)数组中每个元素都有相同的类型。√
(2)一旦数组被声明,大小就不能改变。×
(3)一旦数组被创建,大小就不能改变。√
(4)数组中的元素必须是基本数据类型×
6、下列哪些语句是合法的数组声明?(9分)
(1)int i=new int(30);
(2)double d[]=new double[30];
(3)char[] r=new char(1..30);
(4)int i[]=(3,4,3,2);
(5)float f[]={2.3,4.5,6.6};
(6)char[] c=new char();
(7)int[][] array=new in[5][6];
(8)int[] x=new int[];
(9)int[][] y=new int[3][];
解:(2)(7)(9)(5)为合法数组声明
7、声明数组时给数组分配内存吗?什么时候为数组分配内存?下面代码输出的结果是什
么?(9分)
int x=30;
int[] numbers=new int[x];
x=60;
System.out.println(“x is ”+x);
System.out.println(“The size of numbers is ” + numbers.length);
解:声明数组时不一定给数组分配内存。在栈中声明了一个数组并开辟了一块空间,此时数组分配了内存。输出结果是:x is 60
The size of numbers is 30
8、编写语句完成:(14分)
(1)创建一个含10个double值的数组;
(2)将5.5赋值给数组中最后一个元素;
(3)显示数组前两个元素的和;
(4)编写循环计算数组中所有元素的和;
(5)编写循环找出数组的最小值;
(6)随机产生一个下标,然后显示该下标所对应的数组元素;
(7)使用数组初始化语法创建另一个初始值为3.5、5.5、4、25和5.6的数组;