String类和StringBuilder中常用知识和“+“号和append方法的区别

String类

字符串的比较(equals(区分大小写)

public boolean equals(Object anObject)

        String s1="abc";
        String s2="abc";
        boolean b = s1.equals(s2);  **//true**
        
        String s1="Abc";
        String s2="abc";
        boolean b = s1.equals(s2);  **//false**
		
		//作用: 将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
		//返回: 如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false
		//注:   若类型不同 但内容相同也是false

字符串的比较 equalsIgnoreCase(忽略大小写) )

public boolean equalsIgnoreCase(String anotherString)

        String s1="ABC";
        String s2="abc";
        boolean b = s1.equalsIgnoreCase(s2);  **//true**
        
         //作用: 将此 String 与另一个 String 比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的
         //返回: 如果参数不为 null,且这两个 String 相等(忽略大小写),则返回 true;否则返回 false。
         //注:   若类型不同 但内容相同也是false

字符串的长度(length)

public String substring(int beginIndex)

		public int length( )
		String s1="das9das'da?";
		System.out.println(s1.length());  //11 
		//作用      返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量   
		//返回:     此对象表示的字符序列的长度。

字符串数组转化为字符数组(toCharArray)

public char[] toCharArray()

        String s1 = "1314qwe";           **//不能直接用for循环遍历**
        char[] c = s1.toCharArray();
        for (int i = 0; i < s1.length(); i++) {
            System.out.println(c[i]);     **//1 3 1 4 q w e**
        }
		//作用: 将此字符串转换为一个新的字符数组。 
		//返回: 一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初始化为包含此字符串表示的字符序列

字符串截取(首)(substring)

public String substring(int beginIndex)

		String s1="das9das'da?";
        System.out.println(s1.substring(6));   **//s'da?**   
        //作用: 截取到末尾       beginIndex: 开始位置的索引
		//返回:指定的子字符串

字符串截取(首,末)(substring)

public String substring(int beginIndex,int endIndex)

        String s1="aa786867";
        String s2 = s1.substring(3, 5);
        System.out.println(s2);           **//86**
        //作用: 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
		//返回:指定的子字符串。
        //定义对象接受 注意长度为 (endIndex-behinIndex) 返回末尾是endIndex-1 

字符换替换(replace)

public String replace(CharSequence target, CharSequence replacement)

        String s1="aaaaa";
        String s2 = s1.replace("aaa", "m");
        System.out.println(s2);        **//maa**
		//作用: 替换(旧值,新值) 
        //使用指定的字面值替换序列,替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。 
		//返回: 所得 String    定义变量接受

字符串切割

public String[] split(String regex)

		String s1="a+a+7+8+6+6+7";
        String[] s2 = s1.split("\\+");
        System.out.println(Arrays.toString(s2));  **// a,a,7,8,6,6,7**
		//作用: 切割字符串    传入一个String regex 切割的标准  若没有达到指定效果regex前加//(俩条斜杠)
		//返回: 字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 \
    	//正则表达式

StringBuilder类

传入字符串

public StringBuilder append(任意类型)

public StringBuilder append(任意类型)
    //参数将被转换成字符串,添加数据,返回自己
    //数组也可以
    	StringBuilder  sb=new StringBuilder();
        StringBuilder sb1=sb.append("fsfds");
        StringBuilder sb2=sb.append("dasda");
        StringBuilder sb3=sb.append("45335");
        System.out.println(sb1);
        System.out.println(sb2);
        System.out.println(sb3);         //三个打印出来的内容相同 fsfdsdasda45335
        System.out.println(sb1==sb2);
        System.out.println(sb3==sb2);
        System.out.println(sb1==sb3);    //地址比较都为true
			//对象指向同一个内存空间

		//引出链式编程
	    StringBuilder  sb=new StringBuilder();
        StringBuilder sb1 = sb.append("dasda").append("dfg").append("fdsf");
        System.out.println(sb1);
		//若返回的结果是对象(类型)就可以继续向下调用方法,用链式编程
 	  	//举例substring

字符串反转

public StringBuilder reverse()

		public StringBuilder reverse()
		//作用: 反转字符串
     	StringBuilder s1=new StringBuilder("你好世界");
        StringBuilder b =s1.reverse();
        System.out.println(b);                          	**//界世好你**
        StringBuilder c = b.reverse().append("//到此一游");
        System.out.println(c);          				  **//你好世界//到此一游**

字符长度

public int length()

public int length()
    //作用: 返回长度字符数
    //返回: 此对象表示的当前字符序列的长度
    	StringBuilder s1=new StringBuilder();
        StringBuilder s2 = s1.append("你好世界");
        StringBuilder b =s2.reverse();
        System.out.println(b);                          //界世好你
        StringBuilder c = b.reverse().append("//到此一游");
        System.out.println(c);          //你好世界//到此一游
        int length1 = s2.length();
        int length2 = c.length();
        System.out.println(length1);   //10
        System.out.println(length2);   //10
         //在一个字符串缓冲区的对象字符长度应该是一样的

缓冲区内容转字符串类型

	public String toString()
	 //作用: 返回此序列中数据的字符串表示形式。将分配一个新的 String 对象,并将它初始化,以包含当前由此对象	表示的字符串序列。然后返回此 String。对此序列的后续更改不影响该 String 的内容。
    //返回: 返回一个String类型的对象  此字符序列的字符串表示形式。
	//作用: 将缓冲区内容转换为字符串类型,就可以调用String中的方法
     

String 转 StringBuilder

		String s1= sc.next();
		StringBuilder sb1=new StringBuilder(s1);
		// 一个可变的字符序列
		//它比 StringBuffer 要快
		//在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串.
		//*提高字符串的操作效率
		//字符串的缓冲区,可以理解为容器,这个容器可以存储任意类型,但进入容器后转化为字符串类型
		//StringBuilder与StringBuffer (二者的构造方法和方法相同)
		//StringBuffer多线程更加安全,但效率可能会慢
		//StringBuilder可能不安全,但效率可能更快

使用“+”运算符和使用StringBuilder类的append方法的区别

使用“+”运算符和使用StringBuilder类的append方法的区别在于它们对字符串的处理方式不同1。当你使用“+”运算符连接两个字符串时,它会调用String.Concat方法,每次都返回一个新的字符串对象1。而StringBuilder类的append方法则是将指定的字符串附加到原始字符串中,而不会返回新的字符串对象。
在效率方面,如果你只是连接两个小字符串,例如string s = “a” + “b”;那么使用“+”运算符可能会更快1。然而,当你需要在循环中连接多个字符串时,使用StringBuilder类会更高效。

使用“+”运算符连接字符串:
string s = "Hello" + "World" + "!";
使用StringBuilder类的append方法连接字符串:
StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append("World");
sb.Append("!");
string s = sb.ToString();
在这个例子中,使用“+”运算符的代码更加简洁,但是每次连接字符串时都会创建一个新的字符串对象。
而使用StringBuilder类的append方法则会将指定的字符串附加到原始字符串中,而不会返回新的字符串对象。
因此,在循环中连接多个字符串时,使用StringBuilder类会更高效。
  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

砖智懒病

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值