JAVA——字符串常见面试题

1、new String(“abc”)和"abc"的区别

1、new出来的对象是先在常量池看是否有这个字符串内容,如果有直接在堆里面创建一个对象,存储这个字符串在常量池的地址,如果没有要现在常量池创建一个内存,存储这个字符串,然后再将这个地址存在内存中
2、字符串是直接存在常量池

2、写回文数

1、使用StringBuilder或者StringBuffer的reverse()方法

public static void main(String[] args) {
        String str="evevbd";
        StringBuilder str1=new StringBuilder(str);
        StringBuilder str2=str1.reverse();
        System.out.println(str.equals(str2));
        StringBuffer str3=new StringBuffer(str);
        StringBuffer str4=str3.reverse();
        System.out.println(str.equals(str4));

    }

2、使用charAt方法

public static void main(String[] args) {
        boolean isok=true;
        String str="evev";
        for (int i = 0; i <str.length()/2 ; i++) {
            if(str.charAt(i)!=str.charAt(str.length()-1-i)){
                isok=false;
            }
        }
        System.out.println(isok);
    }

3、如何使字符串变成大写或者小写

toUpperCase()或者toLowerCase()方法

4、如何比较两个字符串?

String内部实现了Comparable接口,有两个比较方法:compareTo 和compareToIgnoreCase(相当于使用了大小写转换再比较)

5、如何将String转换为char,反过来呢

1、String转换为char

String word="cnjsk vdjsk";
char[] c = word.toCharArray();

2、如何将char转换成String

char data[] = {'s', 'g', 'k'};
String str = new String(data);

或者

char[] cha = {'s','g','h'};
String n = String.valueOf(cha);

6、如何将String转换为byte,反过来呢

1、将String转换为byte

String str = "PANKAJ";
byte[] byteArr = str.getBytes();

2、将byte转换成String

byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

String str = new String(byteArray);
 String str1 = new String(byteArray1);

7、String和StringBuffer和StringBuilder的区别

1)

String str="a";
for(int i=1:i<10000;i++){
	str+="a";
}

2)

StringBuffer str1=new StringBuffer("a");
for(int i=1:i<10000;i++){
	str.append("a");
}

3)

StringBuilder str1=new StringBuilder("a");
for(int i=1:i<10000;i++){
	str.append("a");
}

String是不可变类,每当我们对String进行操作的时候,总是会创建新的字符串。操作String很耗资源,所以Java提供了两个工具类来操作String - StringBuffer和StringBuilder。

StringBuffer和StringBuilder是可变类,StringBuffer是线程安全的,StringBuilder则不是线程安全的。所以在多线程对同一个字符串操作的时候,我们应该选择用StringBuffer。由于不需要处理多线程的情况,StringBuilder的效率比StringBuffer高。

猜你喜欢

转载自blog.csdn.net/weixin_42775190/article/details/88038754