ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-17 21:33:35  阅读:159  来源: 互联网

标签:String 对象 StringBuilder 拼接 超强 字符串 public


一.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重要的一个知识点,两者各有优缺点,应用湿应根据应用场景择优而定。下周目标是继续保持学习状态,对学习过的知识点进行回顾,然后对测试题的错题进行总结。

标签:String,对象,StringBuilder,拼接,超强,字符串,public
来源: https://www.cnblogs.com/linwenguan/p/16488511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有