单选题
1. (单选题)
下列哪个叙述是错误的?
- A. "9dog".matches("\\ddog")的值是true。
- B. 12hello567 .replaceAll( [123456789]+ , @ )返回的字符串是@hello@。
- C. new Date(1000)对象含有的时间是公元后1000小时的时间。
- D. "\\hello\n"是正确的字符串常量
正确答案: C
new Date(1000)
创建的 Date
对象表示的是从1970年1月1日 00:00:00 GMT 开始经过的毫秒数,而不是公元后1000小时的时间。
A. “9dog”.matches(“\ddog”)的值是true。
这个叙述是正确的。正则表达式"\ddog"匹配任何一个数字后跟着"dog",所以"9dog"符合这个模式,结果为true。
B. 12hello567 .replaceAll( [123456789]+ , @ )返回的字符串是@hello@。
这个叙述也是正确的。正则表达式[123456789]+匹配1到9之间的数字的一个或多个出现。在给定的字符串"12hello567"中,它匹配到了"12"和"567",然后用"@“替换它们,结果为”@hello@"。
D. "\hello\n"是正确的字符串常量。
这个叙述也是正确的。字符串常量"\hello\n"表示字符串"\hello\n",其中"\h"表示字符"h"前面带有转义字符"“,”\n"表示换行符。所以,在Java中它是一个有效的字符串常量。
2、单选题 下列哪个说法是正确的?
A . "\natural"是正确的String常量。
B. "\hello"是正确的String常量。
正确答案:A \n会被解释成换行符,\h会被识别会非法的转义字符
判断题
1. (判断题)
表达式"3.1415926".matches("[0-9]+[.]{1}[0-9]+")的值是true。
- A. 对
- B. 错
正确答案: 对
这个正则表达式 [0-9]+[.]{1}[0-9]+
可以分解为几个部分:
-
[0-9]+
: 表示一个或多个数字。[0-9]
表示任意一个数字,+
表示前面的字符可以出现一次或多次,所以这部分匹配了数字序列。 -
[.]{1}
: 表示一个小数点。[.]
表示匹配一个小数点,{1}
表示确保小数点只出现一次。 -
[0-9]+
: 再次表示一个或多个数字,匹配小数点后的数字序列。
因此整个正则表达式的意思是匹配一个或多个数字,接着是一个小数点,再接着是一个或多个数字。
在正则表达式中,花括号 {}
用来指定匹配前面字符的次数。有几种不同的用法:
{n}
: 匹配前面的字符恰好 n 次。{n,}
: 匹配前面的字符至少 n 次。{n,m}
: 匹配前面的字符至少 n 次,但不超过 m 次。
例如,在正则表达式 [a-z]{3}
中,{3}
表示匹配小写字母序列,该序列包含恰好三个字符。
2. (判断题)
表达式java88_hello_99".matches("[a-zA-Z|0-9|_]+")的值是true。
- A. 对
- B. 错
正确答案: 对
- 首先匹配任何一个小写字母(a-z)或大写字母(A-Z)
- 然后匹配竖线字符(|)
- 接着匹配任何一个数字(0-9)
- 再次匹配竖线字符(|)
- 最后匹配下划线字符(_)
- +代表匹配前面的字符一次或多次
3. (判断题)
Random对象的nextInt(int n)方法随机返回[0,n)之间的一个整数。
- A. 对
- B. 错
正确答案: 对
Random
是 Java 中用于生成伪随机数的类。它提供了多种方法来生成随机数,其中一些常用的方法包括
-
nextInt()
: 这个方法返回一个随机的整数,范围是Integer.MIN_VALUE
到Integer.MAX_VALUE
之间的任意整数。 -
nextDouble()
: 返回一个随机的双精度浮点数,范围是大于等于0.0(包括)且小于1.0(不包括)的任意双精度浮点数。 -
nextBoolean()
: 返回一个随机的布尔值,即true
或false
。 -
nextLong()
: 返回一个随机的长整数,范围是Long.MIN_VALUE
到Long.MAX_VALUE
之间的任意长整数。 -
nextFloat()
: 返回一个随机的单精度浮点数,范围是大于等于0.0(包括)且小于1.0(不包括)的任意单精度浮点数。 -
nextInt(int n)
: 这个方法会返回一个介于 0(包括)和 n(不包括)之间的随机整数。
4. (判断题) 表达式"RedBird".indexOf("Bird")的值是4。
- A. 对
- B. 错
正确答案: 错 表达式"RedBird".indexOf(“Bird”)的值是 3,而不是 4。这是因为 indexOf()
方法返回第一次出现指定子字符串的位置的索引,索引从 0 开始计数。 indexOf()
方法用于查找字符串中指定子字符串的位置,如果找到则返回第一次出现的位置的索引,如果未找到则返回 -1。它的基本语法是 indexOf(String str)
,其中 str
是要搜索的子字符串。该方法从字符串的开头开始搜索,并返回找到的子字符串的索引位置。
5. (判断题)
表达式"\t\nABC".length()的值是5。
- A. 对
- B. 错
正确答案: 对 \t制表符,\n换行符各占一个字符
三、填空题
1、请说出下面代码中标注的【代码】的输出结果。
public class Main {
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); //【代码】
}
}
}
正确答案:9javaHello
这个正则表达式 \\djava\\w{1,}
可以分解成三部分:
-
\\d
:这表示匹配任意一个数字字符。在这个正则表达式中,它匹配了字符串中的一个数字字符。 -
java
:这表示匹配字面上的字符串 “java”。在这个正则表达式中,它匹配了字符串中的 “java”。 -
\\w{1,}
:这表示匹配至少一个字母数字字符,其中\\w
匹配任何字母数字字符,而{1,}
表示至少重复一次。在这个正则表达式中,它匹配了字符串中 “java” 后面的字母数字字符序列。
所以整个正则表达式 \\djava\\w{1,}
的意思是:匹配以一个数字字符开头,后面紧跟着 “java” 字符串,然后至少有一个字母数字字符的字符串。 如果正则表达式改为 "[\\djava\\w]{1,}" 就全部打印
2、StringBuffer简介及常见用法
StringBuffer 是 Java 中的一个可变的字符串类,它是线程安全的,适用于多线程的环境。在多线程的情况下,如果需要频繁地进行字符串操作,通常会选择使用 StringBuffer,而在单线程环境中则可以使用 StringBuilder,它比 StringBuffer 的性能更好,但是不是线程安全的。
StringBuffer 的常见用法包括:
-
字符串拼接:StringBuffer 提供了
append()
方法用于在字符串的末尾添加内容,这可以避免频繁创建新的 String 对象,提高性能。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString()); // 输出:Hello World
-
插入和删除:StringBuffer 提供了
insert()
和delete()
方法,可以在指定位置插入字符串或删除字符。这些操作可以在字符串中间快速进行插入和删除操作。
StringBuffer sb = new StringBuffer("Hello World");
sb.delete(5, 11);
System.out.println(sb.toString()); // 输出:Hello
StringBuffer sb = new StringBuffer("Hello");
sb.insert(5, " World");
System.out.println(sb.toString()); // 输出:Hello World
-
替换操作:StringBuffer 的
replace()
方法可以替换指定位置的字符或字符串,可以用于修改字符串中的内容。
StringBuffer sb = new StringBuffer("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb.toString()); // 输出:Hello Java
-
反转字符串:StringBuffer 提供了
reverse()
方法可以将字符串进行反转操作。
StringBuffer sb = new StringBuffer("Hello");
sb.reverse();
System.out.println(sb.toString()); // 输出:olleH
-
获取字符串长度:通过
length()
方法可以获取当前字符串的长度。
3. (填空题)
请说出下面代码中标注的【代码1】和【代码2】的输出结果,以空格隔开
public class Main {
public static void main(String args[]) {
byte d[]="abc我们喜欢篮球".getBytes();
System.out.println(d.length); //【代码1】
String s=new String(d,0,6);
System.out.println(s); //【代码2】
}
}
正确答案:21 abc我
在这个案例里,字符串 "abc我们喜欢篮球"
包含7个字符,其中3个是英文字符 (abc),4个是中文字符(我们喜欢篮球)。
在 Java 中,String 类的 getBytes() 方法将字符串编码为字节数组。英文字符通常使用一个字节表示,而中文字符通常使用多个字节表示,这取决于所选字符编码(如 UTF-8)。
因为中文字符"我们"、“喜”、“欢”、“篮”、“球” 对应的 UTF-8 编码是占用 3 个字节,所以这里会一共占用 21 个字节。由于这些中文字符后面还有空格,所以长度是21。 s表示比特数组从0开始截取六个比特的数据给s,故为abc我