Ex3:数组和字符串1、假设s1,s2,s3,s4是四个字符串,其值如下:(25分)Strings1=“WelcometoJava”Strings2=s1Strings3=newString(“welcometojava”);Strings4=“welcometojava”下面表达式的结果是什么?(1)s1==s2;结果:true(2)s2==s2;结果:true(3)s1.equal(s2);结果:true(4)s2.equal(s3);结果:false(5)s1.compareTo(s2);结果:0(6)s2.compareTo(s3);结果:-32(7)s1==s4;结果:false(8)s1.charAt(0);结果:W(9)s1.indexof(‘j’);结果:11(10)s1.indexof(“to”);结果:8(11)s1.lastindexof(‘a’);结果:14(12)s1.lastindexof(“o”,15);结果:9(13)s1.length()结果:15(14)s1.substring(5)结果:metoJava(15)s1.substring(5,11)结果:metoJ(16)s1.startwith(“wel”)结果:false(17)s1.ednwith(“Java”)结果:true(18)s1.toLowerCase()结果:welcometojava(19)s1.toUpperCase()结果:WELCOMETOJAVA(20)“Welcom”.trim()结果:Welcome(21)s1.replace(‘o’,‘T’)结果:WelcTmetTJava(22)s1.replaceAll(‘o’,‘T’)结果:WelcTmetTJava(23)s1.replaceFirst(‘o’,‘T’)结果:WelcTmetoJava(24)s1.toCharArray()结果:char[]s1={‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’‘,’t’,’o’,‘‘,’J’,’a;,’v’,’a’}为了创建一个字符串“WelcometoJava”,可能会用到如下所示的语句:Strings=”WelcometoJava”;或者Strings=newString(“WelcometoJava”);哪个语句更好?为什么?解:第一个语句。因为字符串使用非常频繁第一种比较简化,而第二种比较繁琐。2、假设s1和s2是两个字符串,下面哪些语句或表达式是错误的?(9分)(1)Strings=newString(“newstring”);(2)Strings3=s1+s2;(3)Strings3=s1-s2;(4)s1==s2;(5)s1=s2;(6)s1.compareTo(s2);(7)inti=s1.length();(8)charc=s1(0);(9)charc=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=s1.compareTo(s2)(4)在忽略大小写的情况下比较s1和s2,然后将结果赋值给一个整型值x。x=s1.compareToIgnoreCase(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的组合。newStrings3=s1+s2(10)创建一个s1的子串,下标从1开始。Strings=s1.substring(1)(11)创建一个s1的子串,下标从1到4。Strings=s1.substring(1,4)(12)创建一个新字符串s3,它将s1转换为小写。newStrings3=s1.toLowerCase()(13)创建一个新字符串s3,它将s1转换为大写。newStrings3=s1.toUpperCase()(14)创建一个新字符串s3,它将s1的两端空格去掉。newStrings3=s1..trim()(15)用E替换s1中所有出现字符e的地方,然后将新字符串赋值给s3。s3=s1.replace(‘e’,‘E’)(16)将“WelcometoJavaandHTML”按空格分隔为一个数组tokens。String[]tokens=“WelcometoJavaandHTML”.split()(17)将s1中字符e第一次出现的下标赋值给一个int型变量x。x=s1.indexof(‘e’);(18)将s1中字符串abc最后一次出现的下标赋值给一个int型变量x。x=s1.lastIndexof(“abc”);4、假设给出如下所示的s1和s2:(12分)StringBuilders1=newStringBuilder(“Java”);StringBuilders2=newStringBuilder(“HTML”);显示执行每条语句之后s1的结果。假定这些表达式都是相互独立的。(1)s1.append(“isfun”);结果:Javaisfun(2)s1.append(s2);结果:JavaHTML(3)s1.insert(2,“isfun”);结果:Javisfuna(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);结果:va5、指出下列语句是对还是错?(4分)(1)数组中每个元素都有相同的类型。√(2)一旦数组被声明,大小就不能改变。×(3)一旦数组被创建,大小就不能改变。√(4)数组中的元素必须是基本数据类型×6、下列哪些语句是合法的数组声明?(9分)(1)inti=newint(30);(2)doubled[]=newdouble[30];(3)char[]r=newchar(1..30);(4)inti[]=(3,4,3,2);(5)floatf[]={2.3,4.5,6.6};(6)char[]c=newchar();(7)int[][]array=newin[5][6];(8)int[]x=newint[];(9)int[][]y=newint[3][];解:(2)(7)(9)(5)为合法数组声明7、声明数组时给数组分配内存吗?什么时候为数组分配内存?下面代码输出的结果是什么?(9分)intx=30;int[]numbers=newint[x];x=60;System.out.println(“xis”+x);System.out.println(“Thesizeofnumbersis”+numbers.length);解:声明数组时不一定给数组分配内存。在栈中声明了一个数组并开辟了一块空间,此时数组分配了内存。输出结果是:xis60Thesizeofnumbersis308、编写语句完成:(14分)(1)创建一个含10个double值的数组;(2)将5.5赋值给数组中最后一个元素;(3)显示数组前两个元素的和;(4)编写循环计算数组中所有元素的和;(5)编写循环找出数组的最小值;(6)随机产生一个下标,然后显示该下标所对应的数组元素;(7)使用数组初始化语法创建另一个初始值为3.5、5.5、4、25和5.6的数组;解:double[]arry=newdouble[10];arry[9]=5.5;System.out.println(arry[0]+arry[1]);intsum=0,min=arry[0];for(inti=0;i10;i++)sum+=arry[i];for(intj=1;j10;j++)if(minarry[j])min=arry[j];intx=(int)(Math.Random())*arry.length;System.out.println(“arry[x]=”+arry[x]);double[]myArry={3.5,5.5,4,25,5.6};