String类及其衍生类的简单理解
String
String指的是字符串的类,在java中,它是不可以更改的。
1.下面简单介绍两种构造方法。
public class haohaoxuexi {
public static void main(String[] args) {
String a=new String();
String b="abc";
}
}
这是两种常用的构造方法
但值得注意的是,两者在内存的存储中有很大区别,其上,a变量储存在堆区中,而b变量储存在串池中。
2.那我们该如何比较两个字符串的内容是否一致呢?
大多数一开始都会想的“”,但String是引用数据类型,只有是基本数据类型,“”才能判断内容是否相等,如果是引用数据类型,则是判断地址值是否相等,这显然违背了我们的初衷。
String类中封装了很多方法,其中就有方法解决了这个问题,下面进行简单的演示
public class haohaoxuexi {
public static void main(String[] args) {
String a=new String("abc");
String b="abc";
a.equals(b);
a.equalsIgnoreCase(b);
}
equals就是判断a与b变量内容是否相等的方法,这高效的解决了这个问题。
3.java与c++不同的是,java中的string类没有提供【】运算符的重载,那我们该如何遍历我们的String类呢?
java中同样提供了丰富的方法解决这个问题,下面进行简单的演示。
public class haohaoxuexi {
public static void main(String[] args) {
String a=new String("abc");
for (int i = 0; i <a.length() ; i++) {
a.charAt(i);
}
}
}
charAt方法可以拿出String中的每一个字母,,这样就提供了便利的方法。
此外还有一种方法,就是把String转换为字符数组进行遍历,简单的代码演示如下
String a = new String("abc");
char[] arr = a.toCharArray();//字符数组故为char
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
既然字符串可以转变为字符数组,字符数组自然可以转变为字符串。这便衍生出了String的第三种构造方式
String a = new String("abc");
char[] arr = a.toCharArray();//字符数组故为char
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
String b=new String(arr);
如上,字符数组arr又可以被字符串b进行接受,但值得注意的是,他们本身不是一种形式转换为另外一种形式,而是不同数据类型间内容不变的拷贝。
StringBuilder类
StringBuilder是一个容器,它的主要功能是字符串的拼接与反转。与String最大的不同是,该容器是可以变化的,所以极大减少了拼接时候的运行效率,
下面展示一下他的拼接操作与反转操作
StringBuilder sb= new StringBuilder();
sb.append("a");
sb.append("b");
sb.append("c");
sb.append("d");
System.out.println(sb);
这样便打印出了a,b,c,d,因为append方法的返回值是Stringbuilder,所以可以采取链式编程
StringBuilder sb= new StringBuilder();
sb.append("a").append("b").append("c").append("d");
}
下面介绍他的反转操作
StringBuilder sb= new StringBuilder();
sb.append("a").append("b").append("c").append("d");
sb=sb.reverse();
System.out.println(sb);
调用了reverse方法,打印出来的便是dcba
这便是对String和StringBuilder类的简单理解。
标签:arr,String,StringBuilder,理解,new,sb,衍生,append From: https://www.cnblogs.com/lanyangyangxuejava/p/18678082