java中string类面试题_java中String类的面试题大全含答案

1.下面程序的运行结果是()(选择一项)

String str1="hello";

String str2=new String("hello");

System.out.println(str1==str2);

A. true

B. false

C. hello

D. he

答案:B

分析:str1没有使用new关键字,在堆中没有开辟空间,其值”hello”在常量池中,str2使用new关键字创建了一个对象,在堆中开辟了空间,”==”比较的是对象的引用,即内存地址,所以str1与str2两个对象的内存地址是不相同的

2.Java语言中,String类中的indexOf()方法返回值的类型是()

A. int16

B. int32

C. int

D. long

答案:C

3.给定以下代码,程序的运行结果是 ()(选择一项)

public class Example {

String str=new String("good");

char [] ch={'a','b','c'};

public static void main(String[] args) {

Example ex=new Example();

ex.change(ex.str, ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

}

public void change(String str,char ch[]){

str="test ok";

ch[0]='g';

}

}

A. goodandabc

B. goodandgbc

C. test okandabc

D. test okandgbc

答案:B

分析:在方法调用时,在change方法中对str的值进行修改,是将str指向了常量江池中的”test ok”,而主方法中的ex.str仍然指向的是常量池中的”good”。字符型数组在方法调用时,将主方法中ex.ch的引用传递给change方法中的ch,指向是堆中的同一堆空间,所以修改ch[0]的时候,ex.ch可以看到相同的修改后的结果。

4.执行下列代码后,哪个结论是正确的()(选择两项)

String[] s=new String[10];

A. s[10]为””

B. s[9]为null

C. s[0]为未定义

D. s.length为10

答案:BD

分析: 引用数据类型的默认值均为null

s.length数组的长度

5.实现String类的replaceAll方法

思路说明:replaceAll方法的本质是使用正则表达式进行匹配,最终调用的其实是Matcher对象的replaceAll方法。

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class TestStringReplaceAll {

public static void main(String[] args) {

String str = "a1s2d3f4h5j6k7";

// 将字符串中的数字全部替换为0

System.out.println(replaceAll(str, "\\d", "0"));

}

/**

* @param str:源字符串

* @param regex:正则表达式

* @param newStr:替换后的子字符串

* @return 返回替换成功后的字符串

*/

public static String replaceAll(String str, String regex, String newStr) {

Pattern pattern = Pattern.compile(regex);

Matcher mathcer = pattern.matcher(str);

String reslut = mathcer.replaceAll(newStr);

return reslut;

}

}

6.在“=”后填写适当的内容:

String []a=new String[10];

则:a[0]~a[9]=null;

a.length=10;

如果是int[]a=new int[10];

则:a[0]~a[9]= (0)

a.length= (10)

7.是否可以继承String类?

答:不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。

public final class String implements java.io.Serializable,

Comparable< String>, CharSequence

8.给定两个字符串s和t, 写一个函数来决定是否t是s的重组词。你可以假设字符串只包含小写字母。

public class Solution {

public boolean isAnagram(String s, String t) {

if(s.length()!=t.length())

return false;

int bit[] = new int[26];

for(int i=0;i

bit[s.charAt(i)-'a']++;

}

for(int i=0;i

if(--bit[t.charAt(i)-'a']<0)

return false;

}

return true;

}

}

9.String s=new String(“abc”);创建了几个String对象。

两个或一个,”abc”对应一个对象,这个对象放在字符串常量缓冲区,常量”abc”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”abc”对象的内容来创建出一个新String对象。如果以前就用过’abc’,这句代表就不会创建”abc”自己了,直接从缓冲区拿。

10.输出结果?

String str1=“hello”;

Sring str2=“he”+new String(“llo”);

Sysem.out.println(str1==str2));

Sysem.out.println(str.equal(str2));

false

true

11.关于java.lang.String类,以下描述正确的一项是()

A. String类是final类故不可继承

B. String类final类故可以继承

C. String类不是final类故不可继承

D. String;类不是final类故可以继承

答案:A

12.下面哪个是正确的()

A. String temp[ ] = new String{“a”,”b”,”c”};

B. String temp[ ] = {“a”,”b”,”c”};

C. String temp= {“a”,”b”,”c”};

D. String[ ] temp = {“a”,”b”,”c”};

答案:BD

13.已知如下代码:执行结果是什么()

public class Test {

public static void main(String[] args) {

String s1 = new String("Hello");

String s2 = new String("Hello");

System.out.print(s1 == s2);

String s3 = "Hello";

String s4 = "Hello";

System.out.print(s3 == s4);

s1 = s3;

s2 = s4;

System.out.print(s1 == s2);

}

}

A. false true true

B. true false true

C. true true false

D. true true false

答案:A

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值