1、String是唯一一个可以直接用常量赋值的引用数据类型。

String的常量也是一个对象。

数据段——字符串常量池。

2、每一个字符串常量对象在加载期放入字符串常量池。

java对String常量会在加载期预加载,产生到数据段的字符串常量池中。

运行的时候,如果要用到某个String常量,只需要直接从常量池中取出即可。

3、String拥有一个特殊点叫:String对象内容不可变。

这导致String在做字符串拼接的时候,会有比较大的内存消耗,而StringBuilder和StringBuffer就是用来解决String内容不可变这个问题的。

4、在java中专门重载了“+”号运算符,用来实现字符串的拼接。

在java中也针对String设计了大量的操作方法:

1、String跟数组相关的方法:length(),charAt(),indexOf(),lastIndexOf(),toCharArray()

2、String跟字母有关的方法:toUpperCase(),equalsIgnoreCase()不区分大小写比较两字符串,compareTo()字典顺序比较

3、与内容操作相关:replace(),endWith(),subString()截取字符串,concat()字符串拼接,contains()判断子串

4、最重要的三个方法:

4-1、trim()——去掉字符串前后的空格,(接收字符串输入的时候默认调用的方法)养成习惯。

4-2、split()——做字符串拆分,根据指定的分隔符(传输内容的时候,按一定格式传输和拆分)。

4-3、matchs()——正则表达式效验。

正则表达式:字符串内容的匹配模板。

正则表达式本身就是一个字符串。

符号:

1、[]代表一个字符,里面的内容代表有哪些选择。

2、{}代表前面的正则式出现的次数。

{m,n}最少出现m次,最多出现n次      {m,}最少出现m次         {m}只能出现m次

3、()代表分组可选(_|_|_|...)

StringBuffer/StringBuilder

1、它们是全新的类型,与String没有继承关系。

2、它们不享受String的特殊语法。

3、它们是为了解决String的内容不可变问题出现的,它们是可变的。

4、它们的方法没有String丰富,大部分方法用于做字符串的拼接或删除,用的时候多半需要下标。

区别:

StringBuffer先与StringBuilder产生。

StringBuffer是线程安全的。

StringBuilder是非线程安全的,单线程的情况下尽量用它。

同样的情况下,凡是线程安全的,性能都低一些,凡是线程不安全的,性能都高一些。

day16 常用类(String、StringBuffer、StringBuilder)的更多相关文章

  1. JAVA基础--常用类 String,StringBuffer, 基础数据类型包装类, Math类, Enum类

    字符串相关类: String, StringBuffer String类为不可变的字符序列 String s1="hello"; String s2="hello&quo ...

  2. 重温java中的String,StringBuffer,StringBuilder类

    不论什么一个系统在开发的过程中, 相信都不会缺少对字符串的处理. 在 java 语言中, 用来处理字符串的的类经常使用的有 3 个: String.StringBuffer.StringBuilder ...

  3. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  4. java中 String StringBuffer StringBuilder的区别

    * String类是不可变类,只要对String进行修改,都会导致新的对象生成. * StringBuffer和StringBuilder都是可变类,任何对字符串的改变都不会产生新的对象. 在实际使用 ...

  5. String,StringBuffer,StringBuilder的区别

    public static void main(String[] args) { String str = new String("hello...."); StringBuffe ...

  6. 关于String StringBuffer StringBuilder

    0. String对象的创建       1.关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hello world&qu ...

  7. [置顶] String StringBuffer StringBuilder的区别剖析

    这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个 ...

  8. String StringBuffer StringBuilder (转)

    转自:http://www.iteye.com/topic/522167 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却 ...

  9. 【Java基础】String StringBuffer StringBuilder

    String String是不可变的 我们都知道String不是基本数据类型,而是一个对象,并且是final类型的,不可变的.(public final class String) 查看以下代码: S ...

  10. String,StringBuffer,StringBuilder的区别及其源码分析

    String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而 ...

随机推荐

  1. Sprint9

    进展:完善设置事件提醒界面,增加调用手机铃声部分,以及是否选择振动,以及可以添加事件进行保存.

  2. 猫咪记单词——NABCD模型分析

    N ——Need 需求:学习英语是一件非常重要的事.面对各种各样的考试,学习英语,最重要的就是词汇量,背单词是提高词汇量的最直接的方法,但是单纯的背单词太单调.寻找一些合适的,更易于接受的背单词学习英 ...

  3. Android里面安装windows系统

        安装前请确认以下条件:①:存储卡需要有大于302M的空间. 下载安装:1.下载文件并安装:①:下载地址:http://kuai.xunlei.com/d/hWIkAAIkJwAawgZUa3c ...

  4. iOS成长之路-使用系统默认声音、震动

    导入框架 代码片段 apple系统默认声音名称说明: 1.声音格式是MP3或m4r的需要转成caf格式(可先转成aif , aiff,然后修改后缀) 2.路径在/System/Library/Audi ...

  5. vue 实战语法错误导致的问题记录

    1. 在组件中引入mapActions import mapActions  from 'vuex'   而不是  getActions 2.引入 mutations-type.js import   ...

  6. jquery获取父元素或父节点的方法

    jquery获取父元素方法比较多,比如parent(),parents(),closest()这些都能帮你实现查找父元素或节点,下面我们来一一讲解: 先举个例子: <ul class=" ...

  7. windows多线程(六) 互斥量Mutex与关键段CriticalSection比较

    一.关键段CS 和 互斥量Mutex 的相同点:都有线程拥有权 关键段和互斥量都有线程拥有权,即可以被一个线程拥有.在 前面讲关键段CS的文章中有说到,关键段结构体的第四个参数保存着拥有该关键段的线程 ...

  8. MySQL命令行导入.sql文件遇到的问题

    导入.sql文件的命令行只有一句.但因为.sql文件大,在把本地的.sql文件导入到阿里云服务器的MySQL数据库时遇到了两个问题导入.sql文件的命令(假设数据库名为mydb,用户名root,密码1 ...

  9. Atcoder Yahoo Programming Contest 2019 简要题解

    A-C 直接放代码吧. A int n,k; int main() { n=read();k=read(); puts(k<=(n+1)/2?"YES":"NO&q ...

  10. 【hdu3555】 Bomb

    http://acm.hdu.edu.cn/showproblem.php?pid=3555 (题目链接) 题意 求区间${[1,n]}$含有49的数的个数. Solution 数位dp,先求出不含4 ...