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高。