ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java第八章

2021-11-22 22:02:34  阅读:158  来源: 互联网

标签:java String StringBuilder welcome System 第八章 StringBuffer public


1.借助JDK文档, 选取String与StringBuffer 、StringBuilder的常用API(函数),并编写实例测试API的功能。

String类中:
1.在这里插入图片描述

作用:得到串中下标为index的字符


public class A{
  public static void main(String[] args){
      String w=new String("welcome");
      System.out.println(w);
      int i;
      for(i=0;i<w.length();++i)
       System.out.print(w.charAt(i)+"#");
  }
}
//运行结果
welcom
w#e#l#c#o#m#

 2.

在这里插入图片描述


作用:返回string的长度

public class A{
  public static void main(String[] args){
      String w=new String("welcome");
      System.out.print(w.length());
  }
}
//运行结果
7

 StringBuffer类中:

1.在这里插入图片描述

作用:将括号里的字符串加到原字符串后面 

public class A {
  public static void main(String[] args){
      StringBuffer w=new StringBuffer("welcome");
      System.out.println(w);
      System.out.println("#"+w.append(" you")+"#");
  }
}
//运行结果
welcome
#welcome you#

2.在这里插入图片描述

作用:删除此序列中指定位置的字符

public class A {
  public static void main(String[] args){
      StringBuffer w=new StringBuffer("welcome");
      System.out.println(w);
      System.out.println("#"+w.deleteCharAt(3)+"#");
  }
}
//运行结果
welcome
#welome#

 StringBuilder类中:

在这里插入图片描述

作用:将括号里的字符串加到原字符串后面

public class A {
  public static void main(String[] args){
      StringBuffer w=new StringBuilder("welcome");
      System.out.println(w);
      System.out.println("#"+w.append(" you")+"#");
  }
}
//运行结果
welcome
#welcome you#

 2.在这里插入图片描述

作用:删除原字符串中下标为start(包含)到下标为end(不包含)的子串

public class A {
  public static void main(String[] args){
      StringBuilder w=new StringBuilder("welcome");
      System.out.println(w);
      System.out.println("#"+w.delete(1,4)+"#");
      //0 1 2 3 4 5 6
      //w e l c o m e
      //  * * *
      //删除了下标为1,2,3的字符
  }
}
//运行结果
welcom
#wome#

 

2. 请简述String,StringBuffer,StringBuilder三者之间的共同点与区别,应该分别在何种场景下使用?
共同点:
1.内部实现基于字符数组,封装了对字符串处理的各种操作
2.可自动检测数组越界等运行时异常

不同点:
1.String内部实现基于常量字符数组,内容不可变;
StringBuffer、StringBuilder基于普通字符数组,数组大小可根据字符串的实际长度自动扩容,内容可变
2.性能方面,对于字符串的处理,相对来说 StringBuilder > StringBuffer > String
3.StringBuffer线程安全;StringBuilder非线程安全

应用场景:
String类:
在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。
StringBuffer类:
在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。
StringBuilder类:
在频繁进行字符串运算(如拼接、替换、和删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder,例如SQL语句的拼装、JSON封装等。

3.为什么不建议在for循环中使用“+”进行字符串拼接?
我们可以利用反编译后的代码来看到编译的详细过程,
在反编译后的代码中,for循环中的“+”操作,是每次都new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。

而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费,大大降低了效率。

所以,在循环体内,字符串的连接方式,一般建议使用 StringBuilder 的 append 方法进行扩展。而不是使用“+”进行拼接。

标签:java,String,StringBuilder,welcome,System,第八章,StringBuffer,public
来源: https://blog.csdn.net/weixin_51734827/article/details/121455728

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

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

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

ICode9版权所有