Java笔试简答题3

一、选择题

1.观察下列代码,求最终结果(C)

String str1 = "Abc";
if(str1.equals("abc")){
  System.out.println("爱Java,爱生活~");
} else {
    System.out.println("爱生活,爱Java~");
}

A:什么也没有输出

B:爱Java,爱生活~

C:爱生活,爱Java~

D:运行报错

2.观察下列代码,选出标号1和2的正确答案(A、C)【多选题】

char[] chs = {'h','e','l','l','o'};
String s1 = new String(chs);
String s2 = new String(chs);
String s3 = "hello";
String s4 = "hello";
//1
System.out.println((s1==s2)+","+(s1==s3)+","+(s3==s4));
//2
System.out.println((s1.equals(s2))+","+(s1.equals(s3))+","+(s3.equals(s4)));

A:fase,fase,true

B:false,false,false

C:true,true,true

D:true,true,false

s1和s2都是new的一个新对象,产生在堆内存,所以s1==s2比较的是两个地址,所以不正确。

s1是堆内存的地址,s3是栈里面的值,所以不正确。

s3和s4都是栈内的值,且值相等所以正确。

故//1的答案是false false true

.equals比较的是值,故s1与s2相等,s1、s3相等,s3、s4相等。

故//2的答案均为true

3.观察下列代码,选出标号1和2的正确答案(C、B)【多选题】

public static void main(String[] args) {
    String s1 = "abc";
    String s2 = "abc";
    String s3 = "ABC";
    String s4 = "a";
    String s5 = s4 + "bc";
    String s6 = "a" + "bc";
    //1
    System.out.println(s1.equals(s2)+" "+s1.equalsIgnoreCase(s3)+" "+s2.equals(s5)+" "+s3.equalsIgnoreCase(s5));
    //2
    System.out.println((s1==s2)+" "+(s1==s3)+" "+(s2==s5)+" "+(s2==s6));
    
}

A:  true false true true

B:  true false false true

C:  true true true true

D:  true true true false

//1  true true 不必多说

.equals比较的是值,s5运算完的值与s2相同,故true

同理忽略大小写可得s3和s5的值也相同,故true

//2 true false 不必多说

 s2==s5: s2 的内容是 "abc",而 s5 是通过 s4 + "bc" 动态创建的字符串,即使内容相同,由于 s5 是在运行时动态创建的,因此 s2==s5 的结果为 false。
s2==s6: s2 的内容是 "abc",而 s6 的内容是 "a" + "bc",由于字符串连接操作发生在编译时,并且结果 "abc" 会被放入字符串池中,因此 s2==s6 的结果为 true。

4.以下哪个选项可以获取字符串对象的长度(A)

A:public int length

B:public int length(){ ... }

C:public int size(){ ... }

D:public char charAt(int index){ ... }

解释:

A:public int length

这里的 "public int length" 实际上是指 String 类中的 length() 方法,它返回字符串的长度。但是,这是一个不完整的表示,因为缺少了括号和方法体。在实际的 Java 代码中,正确的调用方式如下:

String str = "Hello, world!";
int length = str.length();  // 正确的调用方式


其他选项的说明:
B:这是一个方法定义,但通常情况下,用户不会去定义自己的 length() 方法来覆盖 String 类中的 length() 方法。
C:size() 方法并不是 String 类定义的方法,但在某些集合类如 List 或 Map 中可能会见到。
D:charAt(int index) 是 String 类的一个方法,用于获取指定索引位置的字符,而不是获取字符串长度。
因此,最接近正确答案的是 A。但是需要注意的是,实际的 Java 代码中应该使用 str.length() 而不是 str.length。

5.以下代码反转字符串逻辑正确的是(C )

A:

String s = "12345";
for (int i = s.length(); i >= 0; i--) {
    s+= s.charAt(i);
}
System.out.println(s);

B:

String s = "12345";
for (int i = s.length()-1; i >= 0; i--) {
    s+= s.charAt(i);
}
System.out.println(s);

C:

String s = "12345";
String s2 = "";
for (int i = s.length()-1; i >= 0; i--) {
    s2+= s.charAt(i);
}
s = s2;
System.out.println(s);

D:

String s = "12345";
String s2 = "";
for (int i = 0; i < s.length(); i++) {
    s2+= s.charAt(i);
}
s = s2;
System.out.println(s);

6.下面关于 String 的描述不正确的是(B、D)【多选题】

A、equals()方法比较的是两个字符串的内容

B.、equals()方法比较的是两个字符串的地址和内容

C、charAt()返回的是指定的索引处的 char 值

D、length 属性代表的是字符串的长度

根据 Java 中 String 类的定义和行为,我们可以分析这些选项:
A. equals() 方法比较的是两个字符串的内容。这是正确的。String 类的 equals() 方法用于比较两个字符串是否具有相同的内容。
B. equals() 方法比较的是两个字符串的地址和内容。这是不正确的。equals() 方法只比较字符串的内容,而不是它们在内存中的地址。
C. charAt() 返回的是指定的索引处的 char 值。这是正确的。charAt() 方法返回字符串中指定索引位置的字符。
D. length 属性代表的是字符串的长度。这是不正确的。在 Java 中,String 类没有名为 length 的属性。而是有一个名为 length() 的方法来获取字符串的长度。
综上所述,不正确的描述是:
B. equals() 方法比较的是两个字符串的地址和内容
D. length 属性代表的是字符串的长度
因此,正确答案是 B 和 D。

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值