【博学谷学习记录】超强总结,用心分享。String与StringBuilder。

一.String

  1.介绍

  1)使用String类时不需要导包

  2)String类代表字符串,java程序中所有的双引号字符串,都是String类的对象

  3)字符串不可变,他们的值在创建之后不能被更改,如有一个变量重复赋值两次,只是记录了一个新的对象,但是里面的内容并没有改变。

  

  2.常见的构造方法

  1)public String():创建一个空白字符串对象,不含任何内容

  2)public String(char[] chs):根据字符串数组的内容,来创建字符串对象

  3)public String(String original):根据传入的字符串内容,来创建字符串对象

  

  注意:String类比较特殊,打印其对象名不会出现地址,而是该对象所记录的真实内容

  

  3.String创建字符串对象的区别

  1)双引号创建的字符串对象,在字符串常量池转给你存储,通过构造方法创建字符串对象,在堆内存中存储

  2)通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同,比较就不同。

  

  4.String面试题

 

package com.study.Test;

public class StringTest {
    public static void main(String[] args) {
        String s1="abc";
        String s2="ab";
        String s3=s2+"c";
        System.out.println(s1 ==s3);//false
    }
}

输出为false的原因是String创建

 String s1="abc";
 String s2="ab";
两个的值是腰存放在字符串常量池中,但
  String s3=s2+"c";
使用“+”号进行拼接,则会进入堆内存中,然后通过底层StringBuilder进行拼接,然后通过toString方法打印出字符串,因此s1和s3的地址不一样。

  

package com.study.Test;

public class StringTest {
    public static void main(String[] args) {
        String s1="abc";
        String s2="a"+"b"+"c";
       
        System.out.println(s1 ==s2);//true
    }
}

 相等的原因是:因为在java中存在常量优化机制,在编译的时候,就会将

"a"+"b"+"c"进行拼接为“abc”;
5.String方法
1)public int length()返回字符串的长度

    数组的长度:数组名.length

    字符串长度:字符串对象.length()

 2)将字符串拆分成字符数组

  public char[] toCharArray():将当前字符串拆分为字符数组并存入数组中

 3)遍历字符串,首先要能获取字符串中的每一个字符

       public char charAt(int index)

 4)截取字符串

  string substring(int beginIndex):
  从传入的索引位置处,向后截取,
  一直截取到末尾,得到新的字符串并返回
  string substring(int beginIndex, int endIndex)
  从beginIndex索引位置开始截取,直到endIndex位置,得到新字符串返回、

二、StringBuilder

  作用是提高字符串的操作效率

  1)构造方法

    StringBuilder:可变的字符串,可以看作是一个容器 

      public StringBuilder()创建一个空白可变字符串对象  

    public StringBuilder(String str)不含任何内容

  2)成员方法

   public StringBuilder append():添加数据,并返回对象本身

   public StringBuilder reverse():返回相反的字符序列
   public int lenght():返回长度(字符出现的个数)
         public String toString():通过toString()可以实现
   把StringBuilder转换成String类型

三、String和StringBuilder的区别

  1,String:内容不可变

    StringBuilder内容是可变的

  2.String的拼接原理

  

 

     string变量和常量进行拼接,首先启动方法区,main方法进入栈内存,执行把s放到字符串常量池中(有就复用没有就创建),然后执行S2进行拼接,系统底层自动在堆内存中生成一个StringBuilder()方法,

    帮我们使用append方法进行拼接,拼接完毕之后,直接使用toString()方法,将StringBuilder类转换成String类,因此会产生两个对象(一个加号两个对象,所以s1==s2//false)

   StringBuilder拼接

    

 

     main方法被jvm执行,SB在堆内存中占了一个空间地址,然后字符串常量中创建了常量abc,调用到堆内存中用append()方法直接拼接,效率高

四、String和StringBuilder两者相互转换

  1.StringBuilde转换成String

    public String toString():通过toSting()就可以实现转换

  2.String转换为StringBuilder

    public StringBuilder(String s):通过构造方法就可以实现把String转换成StringBuilder

五.总结

  本周学习中学了java进阶的内容,写这篇博客主要是为了回顾上周学习的重要的知识点,通过反复的回顾才能打下更好的基础,以便于今后的学习。String和StringBuilder是java重要的一个知识点,两者各有优缺点,应用湿应根据应用场景择优而定。下周目标是继续保持学习状态,对学习过的知识点进行回顾,然后对测试题的错题进行总结。

posted @ 2022-07-17 21:29  LINwenguan  阅读(37)  评论(0编辑  收藏  举报