1.首先String类的俩种实例化方式:
- 直接赋值
String str = "Hello World" ; // str是一个对象,那么"Hello World" 就应该保存在堆内存中
- 使用关键字new:
String str = new String("Hello World") ; //使用关键字new进行对象实例化
-
请解释String类中两种对象实例化的区别 1. 直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。 2. 构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用intern()手动入池
2.字符串的比较
String str1 = "Hello" ;
String str = new String("Hello") ;
System.out.println(str1==str); // false
System.out.println(str1.equals(str));//true
请解释String类"=="与"equals"的区别
- ”==”:进行的数值比较,比较的是两个字符串对象的内存地址数值。
- “equals()”:可以进行字符串内容的比较
3.字符串常用的方法
String a="abcdefj";
//charAt :取得索引位置的字符,索引从0开始
char ch=a.charAt(3);
System.out.println(ch);
//toCharArray():将字符串变为字符数组返回
char[] c=a.toCharArray();
for (int i=0;i<c.length;i++){
System.out.print(c[i]+"\t");
}
System.out.println();
字符串比较:
//equals():比较,区分大小写
//str1.equalsIgnoreCase():比较,不区分大小写
//compareTo():比较俩个字符串大小的关系 相等等于0 . 小于:返回内容小于0,大于则相反
String str1="hello";
String str2="Hello";
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));
System.out.println(str1.compareTo(str2));
字符串查找:
最常用的是contains:
//contains:判断一个子字符串是否存在
//indexOf:从头开始查找指定字符串的位置
//startsWith():判断是否以指定字符串开头
//endsWith:判断是否以指定字符串结尾
String str3 = "helloworld" ;
System.out.println(str3.contains("world")); // true
String str = "helloworld" ;
System.out.println(str.indexOf("world")); // 5,w开始的索引
System.out.println(str.indexOf("bit")); // -1,没有查到
if (str.indexOf("hello") != -1) {
System.out.println("可以查到指定字符串!");
}
字符串替换:
String str = "helloworld" ;
//replaceAll():替换所有的指定内容
//replaceFirst():替换收个内容
System.out.println(str.replaceAll("l", "_"));
System.out.println(str.replaceFirst("l", "_"));
字符串拆分:可以将一个完整的字符串按照指定的分隔符划分为若干个字符串
//字符串拆分 split(String regex):将字符串全部拆分
//split(String regex ,int limit):将字符串部分拆分,该数组长度就是limit的极限
String str4 = "hello world hello bit" ;
String[] result = str4.split(" ") ; // 按照空格拆分
for(String s: result) {
System.out.print(s+"\t");
}
//多次拆分
String str6 = "yuisama:27|yui:25" ;
String[] result1 = str6.split("\\|") ;
for (int i = 0; i < result1.length; i++) {
String[] temp = result1[i].split(":") ;
System.out.println(temp[0]+" = "+temp[1]);
}
字符串截取:
String str = "helloworld" ;
System.out.println(str.substring(5));
System.out.println(str.substring(0, 5));
其他方法;
注意:String类的特点是:
String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。
可以发现字符串上没有发生任何变化,但是字符串对象的引用一直在改变,而且会形成大量的垃圾空间