1.问答题

  1. "\hello"是正确的字符串常量吗?
  2. “你好KU”.length()和"\n\t\t".length()的值分别是多少?
  3. “Hello”.equals(“hello”)和"java".equals(“java”)的值分别是多少?
  4. “Bird”.compareTo(“Bird fly”)的值是正数还是负数?
  5. “I love this game”.contains(“love”)的值是true吗?
  6. “RedBird”.indexOf("Bird)的值是多少?“RedBird”.indexOf(“Cat”)的值是多少?
  7. 执行"Integer.parseInt(“12.9”);"会发生异常吗?

问答题解析

1.不是。


2.4和3。.length()返回字符串的长度,第二个字符串时由三个转义字符构成的。


3.false和true。String对象调用equals(String s)方法比较当前String对象的字符序列是否与参数s指定的String对象的字符序列相同,是区分大小写的,所以第一个为false。


4.负数。String对象调用compareTo(String s)方法,按字典序与指定的String对象s的字符序列比较大小。如果当前String对象的字符序列与s的相同,该方法返回0;如果大于s的字符序列,该方法返回正值,如果小于s的字符序列,该方法返回负值。


5.是true。
String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列


6.3和-1
String 对象的字符序列索引位置从0开始。String对象调用方法indexOf(String str)从当前String对象的字符序列的0索引位置开始检索首次出现str的字符序列的位置,并返回该位置。如果没有检索到,该方法返回的值是-1。


7.会发生NumberFormatException异常,因为字符序列是浮点格式的,不能用int转换.


2.选择题

(1)下列哪个叙述是正确的?
A.String 类是final类,不可以有子类。
B.String类在java.util包中。
C.“abc”=="abc"的值是false。
D.“abc”.equals(“Abc”)的值是true。


(2)下列哪个表达式是正确的(无编译错误)?
A.int m=Float.parseFloat(“567”);
B. int m = Short.parseShort(“567”);
C.byte m = Integer.parseInt(“2”);
D.float m = Float.parseDouble(“2.9”);


(3)对于如下代码,下列哪个叙述是正确的?
A.程序编译出现错误。
B.程序标注的【代码】的输出结果是bird。
C.程序标注的【代码】的输出结果是fly。
D.程序标注的【代码】的输出结果是null。

Java
public class E{public static void main(String [] args){String strOne="bird";String strTwo = strOne;strOne="fly";System.out.println(strTwo);//【代码】}}

(4)对于下列代码,下列哪个叙述是正确的?
A.程序出现编译错误。
B.无编译错误,在命令行执行程序"Java E I love this game",程序输出this。
C.无编译错误,在命令行执行程序"Java E let us go",程序无运行异常。
D.无编译错误,在命令行执行程序"Java E 0 1 2 3 4 5 6 7 8 9",程序输出3。

Java
public class E{public static void main(String args[]){String s1=args[1];String s2 = args[2];String s3=args[3];System.out.println(s3);}
}

(5)下列哪个叙述是错误的?
A.“9dog”.matches("\ddog")的值是true。
B.“12hello567”.replaceAll("[123456789]+","@")返回的字符串是@hello@。
C. new Date(1000)对象含有的时间是公元后1000小时的时间。
D."\hello\n"是正确的字符串常量。


选择题解析

1.A
String类在java.lang包中;“abc”==“abc"的值是true,字符常量存储在常量池中,他们的引用是相同的;而"abc”.equals(“Abc”)的值是false,区分大小写的。
2.B
parseXXX(String s)方法是将由“数字”字符组成的字符序列转化成对应的数据类型。
A中不能将float类型赋值给int
C中不能讲int赋值给byte
D中Float类不存在parseDouble方法


3.B
String常量是对象,因此可以把String常量的引用赋值给一个String对象。strOne和strTwo是用户声明的String对象,strOne的值是可以被改变的,如果再进行strOne="fly"运算,那么strOne中的值将发生变化。
strTwo的=strOne就将strOne指向的常量池对象bird赋值给了strTwo。


4.D
B选项输出的实际是game,因为下标从0开始;
C选项发生数组下标越界异常,因为并没有给arg[3]赋值;


5.C
String对象调用public boolean matches(String regex)方法可以判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配。\d代表0-9中的任何一个数字。所以A选项是匹配的。
replaceAll(String regex,String replacement)方法返回一个新的String对象,把当前String对象的字符序列中所有和参数regex匹配的子字符序列,用参数replacement的字符序列替换后得到字符序列。
B选项中将1-9数字序列替换为@,返回的字符串就是@hello@。
C选项1000表示公元后1000毫秒的时间,公元时间是1970-01-01 0时。


阅读程序

(1)请说出E类中标注的【代码】的输出结果

Java
public class E {public static void main(String args[]) {String str = new String("苹果");modify(str);System.out.println(str);// 【代码】}public static void modify(String s) {s = s + "好吃";}
}

(2)请说出E类中标注的【代码】的输出结果。

Java
import java.util.StringTokenizer;class GetToken {String s[];public String getToken(int index, String str) {StringTokenizer fenxi = new StringTokenizer(str);int number = fenxi.countTokens();s = new String[number + 1];int k = 1;while (fenxi.hasMoreTokens()) {String temp = fenxi.nextToken();s[k] = temp;k++;}if (index <= number) {return s[index];} elsereturn null;}
}public class E {public static void main(String args[]) {String str = "We Love This Game";GetToken token = new GetToken();String s1 = token.getToken(2, str);String s2 = token.getToken(4, str);System.out.println(s1 + ":" + s2);//【代码】}
}

(3)请说出E类中标注的【代码1】和【代码2】的输出结果

Java
public class E {public static void main(String args[]) {byte d[] = "abc我们喜欢篮球".getBytes();System.out.println(d.length);//【代码1】String s = new String(d, 0, 7);System.out.println(s);//【代码2】}
}

(4)请说出E类中标注的【代码】的输出结果。

Java
class MyString {public String getString(String s) {StringBuffer str = new StringBuffer();for (int i = 0; i < s.length(); i++) {if (i % 2 == 0) {char c = s.charAt(i);str.append(c);}}return new String(str);}
}public class E {public static void main(String args[]) {String s = "1234567890";MyString ms = new MyString();System.out.println(ms.getString(s));//【代码】}
}

(5)请说出E类中标注的【代码】的输出结果

Java
public class E {public static void main(String args[]) {String regex = "\\djava\\w{1,}";String str1 = "88javaookk";String str2 = "9javaHello";if (str1.matches(regex)) {System.out.println(str1);}if (str2.matches(regex)) {System.out.println(str2);//【代码】}}
}

阅读程序题解析

1.苹果。
String对象的字符序列是不可修改的,也就是说,String对象的字符序列的字符不能被修改、删除,即String对象的实体是不可以再发生变化的。


2.Love:Game
这道题考察StringTokenizer类使用,该类用于分解String对象的字符序列。首先调用getToken方法传入2和str字符串,StringTokenizer fenxi = new StringTokenizer(str);为String对象str构造一个分析器,使用默认的分隔标记,即空格符、换行符、回车符、Tab符做分隔标记。所以str被分解成四个语言符号:We、Love、This和Game。int number = fenxi.countTokens();调用countTokens方法得到分析器中计数变量的值赋值给number,也就是4.在循环中使用了hasMoreTokens()方法,只要字符序列中还有语言符号,该方法就返回true,循环体内使用nextToken()方法逐个获取字符序列的单词,并存入字符串数组中(k=1,从1开始)。所以结果变为了s[1]=“We”,s[2]=“Love”,s[3]=“This”,s[4]=“Game”.之后用条件语句判断传入的参数是否小于等于计数变量,是的话就返回index作为s数组下标的值也就是Love。
第二个同理,只不过传入的是4,那么s2就是Game。最后输出Love:Game。


3.15
abc我们
getBytes()方法使用平台默认的字符编码,将当前String对象的字符序列存放到字节数组中,并返回数组的引用。第一行输出数组的长度,英文字母占一个字节,汉字占两个字节,所以长度为15.
然后又创建新的String 对象s,在构造方法中传入三个参数,意思是用数组d中从0到6(7-1)位置上的字符去创建String对象输出的s为abc我们


4.13579
这道题考察StringBuffer类使用方法,首先传入字符串s"1234567890",使用循环遍历字符串,如果遍历到能被2整除的位置,就调用charAt(i)方法得到字符序列该位置上的字符,之后调用append方法将该字符追加到StringBuffer对象的字符序列中。


5.9javaHello
regex是正则表达式,\d代表0-9中任意一个数字,\w代表可用于标识符的字符(不包括美元符号),{1,}表示至少出现1次,调用matches方法判断当前String对象的字符序列是否和参数regex指定的正则表达式匹配,可以发现str1是不匹配的,因为有两个数字,而str2是匹配的,所以输出str2。


编程题

(1)字符串调用public String toUpperCase()方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;字符串调用public String toLowerCase()方法返回一个字符串,该字符串把当前字符串中的大写字母变成小写字母。String类的public String concat(String str)方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串连接。编写一个程序,练习使用这3个方法。

public class E {public static void main (String args[ ]) {String s1,s2,t1="ABCDabcd";s1=t1.toUpperCase();s2=t1.toLowerCase(); System.out.println(s1);System.out.println(s2);String s3=s1.concat(s2);System.out.println(s3);}
}

(2)String类的 Public char charAt(int index)方法可以得到当前字符串index位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。

public class E {public static void main (String args[ ]) {String s="ABCDabcd";char cStart=s.charAt(0);char cEnd = s.charAt(s.length()-1);System.out.println(cStart);System.out.println(cEnd);}
}

(3)编写程序剔除一个字符串中的全部非数字字符,例如,将形如“ab123you”的非数字字符全部剔除,得到字符串“123”。

public class E {public static void main (String args[ ]) {String str = "ab123you你是谁?";String regex = "\\D+";str = str.replaceAll(regex,"");System.out.println(str);}
}

Java 习题8 参考答案及解析相关推荐

  1. Java 习题2 参考答案及解析(2)

    习题2 参考答案及解析(1) 3.阅读或调试程序 (1) 上机运行下列程序,注意观察输出的结果. Java public class E{public static void main(String ...

  2. java 变成题_Java 习题8 参考答案及解析

    1.问答题 "\hello"是正确的字符串常量吗? "你好KU".length()和"\n\t\t".length()的值分别是多少? &q ...

  3. 第六届省赛(软件类)真题----Java大学B组答案及解析

    第六届省赛(软件类)真题----Java大学B组答案及解析 三角形面积 立方变自身 三羊献瑞 循环节长度 九数组分数 加法变乘法 牌型种数 饮料换购 垒骰子 生命之树 一.三角形面积 如[图1]所示. ...

  4. 第六届省赛(软件类)真题----Java大学C组答案及解析

    第六届省赛(软件类)真题----Java大学C组答案及解析 隔行变色 立方尾 无穷分数 循环节长度 格子中输出 奇妙的数字 加法变乘法 移动距离 打印大X 垒骰子 一.隔行变色 Excel表的格子很多 ...

  5. 第五届省赛(软件类)真题----Java大学B组答案及解析

    第五届省赛(软件类)真题--Java大学B组答案及解析 正则切分 调和级数 n的n次幂 七对数字 勾股定理 九阶数独 G将军 一.正则切分 java中提供了对正则表达式的支持. 有的时候,恰当地使用正 ...

  6. 第六届省赛(软件类)真题----Java大学A组答案及解析

    第六届省赛(软件类)真题----Java大学A组答案及解析 熊怪吃核桃 星系炸弹 九数分三组 循环节长度 打印菱形 加法变乘法 牌型种数 移动距离 垒骰子 灾后重建 一.熊怪吃核桃 森林里有一只熊怪, ...

  7. 第五届省赛(软件类)真题----Java大学A组答案及解析

    第五届省赛(软件类)真题--Java大学A组答案及解析 子序列最大长度 莱布尼茨公式 n的n次幂 七对数字 勾股定理 九阶数独 矩阵射线 一.子序列最大长度 一个串的子串是指该串的一个连续的局部.如果 ...

  8. 第五届省赛(软件类)真题----Java大学C组答案及解析

    第五届省赛(软件类)真题--Java大学C组答案及解析 杨辉三角 调和级数 回文素数 过大年 位平方和 单位分数 n级台阶 一.杨辉三角 二项式的系数规律,我国数学家很早就发现了. 如[图1.png] ...

  9. matlab7.x答案,MATLAB习题及参考答案

    <MATLAB习题及参考答案>由会员分享,可在线阅读,更多相关<MATLAB习题及参考答案(14页珍藏版)>请在人人文库网上搜索. 1.习题:1, 计算与的数组乘积.2, 对于 ...

最新文章

  1. Struts2 中的数据传输的几种方式
  2. YOLOv5的pytorch模型文件转换为ONNX文件
  3. 0708---oop学习--用户密码管理
  4. linux 进程内核栈
  5. 网络安全基础——服务器远程管理
  6. 安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字
  7. ElasticSearch--Field的使用
  8. 实验5-11 空心的数字金字塔
  9. 数据挖掘技术-绘制饼图
  10. defined but not used [-Wunused-function] 使用 __attribute__((unused)) 告诉编译器忽略此告警
  11. 2021年三月计算机一级ms,2021年计算机一级Ms Office试题(总)
  12. RPG游戏寻找NPC流程
  13. 782 变为棋盘——Leetcode天天刷(2022.8.23)【数学:降维计算】
  14. Unity-动作系统-案例学习(1)人物移动和转向
  15. Labview之子面板的使用
  16. 2022年区块链趋势分析:全球区块链解决方案支出将达到117亿美元
  17. 华为的型号命名规则_海康网络网络摄像机命名规则,海康IPC型号含义解释说明...
  18. 【IDEA】如何完美的修改重命名一个SpringBoot项目工程名称
  19. nginx内置变量 $request_filename
  20. html鼠标自动向下滑动,html – 使用鼠标滚轮滚动到下一个或上一个div

热门文章

  1. 计算机设计大赛国奖作品_6. 测试报告
  2. 横向RecycleView,左拉更新的、切换页面
  3. 整理了几个物联网应用就业前景(附整理的岗位发展和挑战)
  4. Depends工具 使用
  5. C#程序设计_计程车车费
  6. 两个forEach 外层循环一次内层也相应循环一次的实现
  7. 机器学习-降维算法(MDS算法)
  8. html td中加label,HTML——label标签
  9. 度转度分秒、度分秒转度
  10. [PTA]实验7-3-5 输出大写英文字母