JAVA---String与StringBuilder详解

一. String的构造方法

  •  public String():创建一个空白字符串对象。不含有任何内容
    
  •  public String(char[] chs):根据字符数组的内容,来创建字符串对象
    
  •  public String(byte[] bys):根据字节数组的内容,来创建字符串对象
    
  •  String s="abc":直接赋值的方式创建字符串对象,内容是abc
    

最常用的还是最后一种,直接赋值

需要注意的是
对于第一种构造方法,他们的内容相同,但地址不同

		char[] chs= {
    
    'a','b','c'};
		String s1=new String(chs);
		String s2=new String(chs);
		//比较地址是否相同
		System.out.println(s1==s2);//返回false
		//比较字符串内容是否相同
		System.out.println(s1.equals(s2));//返回true

对于直接赋值的方法:他们的内容和地址都相同

		String s3="abc";
		String s4="abc";
		//比较地址是否相同
		System.out.println(s3==s4);//返回true
		//比较字符串内容是否相同
		System.out.println(s3.equals(s4));返回true

下边这张图可以详细说明String创建时内存分配情况
在这里插入图片描述


二. 利用String进行字符串拼接

因为String创建完之后,它的值不允许被修改,因此每次对String对象进行拼接的时候都会重新创建一个新的String对象,这种操作既耗时又浪费内存空间。

在这里插入图片描述因此可以利用JAVA提供的StringBuilder类来解决这个问题


三. StringBuilder构造方法

  •  public StringBuilder()
    
  • 创建一个空白可变的字符串对象,不含有任何内容
  •  public StringBuilder(String str)
    
  • 根据字符串的内容,来创建可变字符串对象

四.StringBuilder的添加和反转方法

public StringBuilder append(任意类型)
//添加数据,并返回本身
public StringBuilder reverse()
//返回相反的字符序列
public class stringbuilderDemo {
    
    
	public static void main(String[] args) {
    
    
		//public StringBuilder():创建一个空白可变的字符串对象,不含有任何内容
		StringBuilder s1=new StringBuilder();
		System.out.println("s1:"+s1);
		//输出s1:
		System.out.println("s1.length:"+s1.length());
		//输出s1.length:0
		
		//public StringBuilder(String str):根据字符串的内容,来创建可变字符串对象
		StringBuilder s2=new StringBuilder("helloworld");
		System.out.println("s2:"+s2);
		//输出s2:helloworld
		System.out.println("s2.length:"+s2.length());
		//输出s2.length:10
		
		//public StringBuilder append(任意类型):添加数据,并返回对象本身
		StringBuilder s3=new StringBuilder();
		StringBuilder s4=s3.append("hello");
		
		System.out.println("s3:"+s3);
		//输出s3:hello
		System.out.println("s4:"+s4);
		//输出s4:hello
		System.out.println(s3==s4);
		//输出true
		
		s3.append("world").append("100");
		System.out.println(s3);
		//输出helloworld100
		
		s3.reverse();
		System.out.println(s3);
		//输出001dlrowolleh
		}
	}


五.StringBuilder和String的相互转换

  • (1).StringBuilder->String
  •  public String toString()
    
  • 通过toString方法将StringBuilder转化为String
  • (2).String->StringBuilder
  •  public StringBuilder(String s)
    
  • 通过构造方法就可以实现把String转化为StringBuilder
public class stringbuilderDemo {
    
    
	public static void main(String[] args) {
    
    
	
	StringBuilder s1=new StringBuilder();
		s1.append("hello");
		
		String s2=s1.toString();
		System.out.println(s2);		//输出hello
		
		String s3="helloworld";
		
		StringBuilder s4=new StringBuilder(s3);
		System.out.println(s4);		//输出helloworld
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_45102820/article/details/112982018