zoukankan      html  css  js  c++  java
  • 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<s.length();i++){
    bit[s.charAt(i)-'a']++;
    }

    for(int i=0;i<s.length();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

  • 相关阅读:
    ThinkPHP5.0更改框架的验证方法:对象->validate(true)->save();
    ThinkPHP5.0版本和ThinkPHP3.2版本的区别
    ThinkPHP5.0版本的优势在于:
    11: django-haystack+jieba+whoosh实现全文检索
    10: supervisor进程管理工具
    09: redis集群之sentinel
    08: python支付宝支付
    07: redis分布式锁解决超卖问题
    06:keepalive高可用集群(新)
    05: 使用docker部署nginx负载均衡
  • 原文地址:https://www.cnblogs.com/Yanss/p/11686527.html
Copyright © 2011-2022 走看看