欢迎来到Java String Quiz. String是Java中最重要的类之一. 如果你已经在Java中做过任何编程,你必须使用它。
这个字符串非常受欢迎,当它涉及到Java采访问题或问卷时,所以我已经收集了一些伟大的和棘手的Java字符串问卷问题,你应该尝试。
关于Java String Quiz
如果你能正确回答15个或更多问题,那么你可以认为自己非常擅长 String 概念,你可以通过点击每个问题之后的**Reveal Answer**
按钮来检查答案和详细的解释。
让我们开始 String Quiz 和最好的运气。
1、下列陈述的结果将是什么?
1String s = "Java String Quiz";
2System.out.println(s.charAt(s.toUpperCase().length()));
A. 将 Z
转换为 int 90 并打印到 90
B. 运行时间例外
C. 打印到 z
D. 打印到 Z
[详细信息 点击解答
**正确答案:B
**
它会抛出运行时例外。在字符串
主中的例外 java.lang.StringIndexOutOfBounds例外:字符串索引在范围之外: 16
这是因为索引值从0开始。
( )
2、下面的陈述会产生什么样的结果?
1String s = "Java String Quiz";
2System.out.println(s.substring(5,3));
A. 打印Str
B. 运行时例外
C. IndexOutOfBoundsException 运行时例外
D. StringIndexOutOfBoundsException 编译时间错误
[详细信息 点击解答
**正确答案: B
**
它会将运行时例外与错误消息投放为 例外在 thread "main" java.lang.StringIndexOutOfBounds例外:开始 5,结束 3,长度 16
. 这是因为终端索引小于开始索引。
( )
选择 String 类的所有有效方法。
A. 按摩() B. 按摩() C. 按摩() 按摩()
[详细信息 点击解答
正确答案:A、B
String 类的有效方法是 - trim(), intern(), toLowerCase(),和 split(string regex)。
( )
四、下列陈述的结果将是什么?
1String s1 = "Cat";
2String s2 = "Cat";
3String s3 = new String("Cat");
4System.out.print(s1 == s2);
5System.out.print(s1 == s3);
A. truefalse B. truetrue C. falsefalse D. falsetrue
[详细信息 点击解答
**正确答案: A ** 当我们使用双引文创建一个字符串时,它首先在字符串池中寻找具有相同值的字符串。
然而,使用新的运算符,我们强迫 String 类在堆积空间中创建一个新的 String 对象,所以 s1 和 s2 将在池中引用相同的 String,而 s3 将是池外的不同对象,因此输出。
( )
5、下列哪一个句子对 switch 中的 string 是正确的?
A.在 Java 1.5 或更高版本的切换案例中允许 String. B.在 Java 1.7 或更高版本的切换案例中允许 String. C. equals() 方法是由切换案例实现使用的,所以添加 null 检查以避免 NullPointerException。
[详细信息 点击解答
正确答案:B、C
阅读更多在 java switch case string
( )
以下哪个陈述对 StringBuffer 和 StringBuilder 是正确的?
A. StringBuilder 不是线程安全的 B. StringBuffer 是线程安全的,因为它的方法是同步的 C. StringBuilder 在 Java 1.4 中被引入D. StringBuffer 和 StringBuilder 是不可变的。
[详细信息 点击解答
正确答案:A、B
StringBuffer 对象是线程安全的,因为它的方法是同步的,但这在大多数情况下是过度的,因此 StringBuilder 被引入了 Java 1.5. StringBuilder 不是线程安全的 StringBuffer 和 StringBuilder 是可变的类。
( )
7. String 实施遵循下面的哪个设计模式?
A. 飞行设计模式 B. 工厂模式 C. Singleton模式 D。
[详细信息 点击解答
正确答案:A
String pool 的实施遵循 Flyweight 设计模式( / 社区 / 教程 / Flyweight - 设计 - 模式 - Java)。
( )
8、下面陈述的结果将是什么?
1String s1 = "abc";
2String s2 = "def";
3System.out.println(s1.compareTo(s2));
A. 0 B. true C. -3 D. false
[详细信息 点击解答
**正确答案: C ** 从 String compareTo() 方法文档:
_compareTo 方法用语法比较两个字符串。 比较是基于字符串中的每个字符的 Unicode 值。 这个字符串对象所代表的字符序列是语法上与参数字符串所代表的字符串进行比较。 结果是否定整数,如果这个字符串对象在语法上先于参数字符串。 结果是正整数,如果这个字符串对象在语法上跟随参数字符串。
如果两个字符串是不同的,那么它们在某个索引中有不同的字符,这对两个字符串都是有效的索引,或者它们的长度是不同的,或者两者都有不同的字符,如果它们在一个或多个索引位置有不同的字符,那么k是最小的此类字符;那么在位置k的字符具有较小的值的字符串,如使用 < 运算器所确定,在语法上先于另一个字符串。
this.charAt(k)-anotherString.charAt(k)
在我们的示例中,abc
先于def
,因此返回负整数. 然后与不同的 char 最低的索引为 0 和 a-d 等于 -3.
( )
9、下面的计划将是怎样的?
1public class Test {
2 public static void main(String[] args) {
3 String x = "abc";
4 String y = "abc";
5 x.concat(y);
6 System.out.print(x);
7 }
8}
A. abc B. abcabc C. null
[详细信息 点击解答
正确答案:A
x.concat(y)
将创建一个新的字符串,但它没有被分配给x,所以x的值不会改变。
( )
10、下面的计划将是怎样的结果?
1public class Test {
2 public static void main(String[] args) {
3 String s1 = "abc";
4 String s2 = "abc";
5 System.out.println("s1 == s2 is:" + s1 == s2);
6 }
7}
A.假 B. s1 == s2 是:真 C. s1 == s2 是:假 D。
[详细信息 点击解答
正确答案:A
所给出的陈述输出将是假的
,因为在 java + 操作员的优先级是多于 == 操作员,因此所给出的表达式将被评估为s1 == s2 is:abc
== abc
即假的。
( )
11、下面陈述的结果将是什么?
1String s = "Java"+1+2+"Quiz"+""+(3+4);
2System.out.println(s);
A. Java3Quiz7 B. Java12Quiz7 C. Java12Quiz34 D. Java3Quiz34
[详细信息 点击解答
正确答案:B
首先,在支架中的表达式被执行,然后它是所有 + 操作员,所以它们被执行从左到右。
我们在每个连接中获得 String,因此输出如下所示。
Java
+1+2+Quiz
++(3+4) =`Java`+1+2+`Quiz`+
+7
=Java1
+2+Quiz
++7 =`Java12`+`Quiz`+
+7
=Java12Quiz
+``++
+7
=Java12Quiz
++
( )
12. 下面的语句中创建了多少 String 对象?
1String s = "abc"; // statement 1
2String s1 = new String("abcd"); // statement 2
A. 1 B. 2 C. 3 D. 4
[详细信息 点击解答
正确答案: C
在声明 1 中,在 String 池中创建abc
。
在声明2中,首先在字符串池中创建abcd
,然后作为一个参数传递给新的字符串操作员,并在堆积内创建另一个字符串。
因此,总共创建了3个字符串对象。
( )
13、下面陈述的结果将是什么?
1String s1 = "abc";
2String s2 = new String("abc");
3System.out.print(s1==s2);
4System.out.println(s1==s2.intern());
A. falsetrue
B. falsefalse
C. truetrue
D. truefalse
[详细信息 点击解答
正确答案:A
s1在字符串池中,而s2是在堆积内创建的。
因此 s1==s2 會返回 false。
当s2.intern()
方法被调用时,它会检查池中是否有任何具有值abc
的字符串,因此它会返回 s1 的引用,所以现在 s1 和 s2 都指向相同的字符串实例。
因此 s1==s2.intern() 会返回 true。
( )
选择由 String 类实现的所有接口。
A. 可序列化 B. 可比较 C. 可控制 D. 可克隆
[详细信息 点击解答
正确答案:A、B、C
String 是可序列化和可比较的,Constable 是 Java 12 版本的新界面。
( )
15. 选择所有使 String 成为地图密钥的完美候选人的原因?
A. String 是不可变的 B. String 是最终的 C. String 正确地执行 hashCode() 和 equals() 方法 C。
[详细信息 点击解答
**正确答案:A,B,C ** HashCode()和equals()方法的正确执行是地图密钥的必需品。
( )
16、下面代码片段的输出将是什么?
1String s1 = new String("java");
2String s2 = new String("JAVA");
3System.out.println(s1 = s2);
A. JAVA B. JAVA C. true D. false
[详细信息 点击解答
** 正确答案: A
**
它会打印JAVA
,因为 println() 方法中的参数是一个分配,因此将被视为System.out.println
(JAVA
)`。
( )
17、下面陈述的结果将是什么?
1String s1 = "abc";
2StringBuffer s2 = new StringBuffer(s1);
3System.out.println(s1.equals(s2));
A. false B. true C. ClassCast在运行时的例外 D.编译时间错误
[详细信息 点击解答
正确答案:A
它会打印 false 因为 s2 不是 String 类型. 如果你要查看 String equals() 方法实现,你会发现使用 instanceof
运算器进行检查,以检查通过的对象类型是否是 String? 如果不是,则返回 false。
( )
18、下面代码片段的输出将是什么?
1String s1 = "abc";
2String s2 = new String("abc");
3s2.intern();
4System.out.println(s1 == s2);
A. 虚假 B. 真实 C. 无效
[详细信息 点击解答
正确答案:A
我们知道 intern() 方法将从字符串池中返回 String 对象参考,但由于我们没有将其分配回 s2,所以 s1 和 s2 都具有不同的参考。
如果我们将3行中的代码更改为s2 = s2.intern();
,那么输出将是真的。
( )
选择扩展 String 类的所有类。
A. StringBuffer B. StringBuilder C. StringWriter D. 无
[详细信息 点击解答
**正确答案: D ** 这是一个棘手的问题. String 是一个最终的类,所以你不能扩展它。
( )
下列哪个说法对 Java 中的 String 是真实的?
A. 我们可以像 StringBuffer 那样扩展 String 类 B. String 类在 java.util 包中定义 C. String 在 Java 中是不可变的 D. String 在 Java 中是安全的 E. String 在 Java 中是敏感的。
[详细信息 点击解答
正确答案: C、D、E
我们不能扩展 String 类,因为它是最终的 StringBuffer 不会扩展它. String 类被定义为 java.lang
包。 字符串是不可变的,因此在 java 中是安全的。
( )
21、下面陈述的结果将是什么?
1String s1 = null;
2System.out.print(s1); // line 2
3System.out.print(s1.toString()); // line 3
A. nullnull B. null 然后是 NullPointerException C. NullPointerException
[详细信息 点击解答
正确答案:B
行 2 会打印null
,因为打印
方法有这样的 null 检查:
「如果(s == null) { s = "null";}`
行 3 会抛出 NullPointerException,因为我们试图在 null 上调用 toString() 函数。
( )
结论
我已经尝试在这个测验中覆盖了关于 String 的大多数重要点. 如果你认为一些有趣的概念被错过了,请通过评论告诉我。