zoukankan      html  css  js  c++  java
  • Java笔记——String、StringBuffer和StringBuilder类

    String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符串序列是不可改变的,直至这个对象被销毁。
     
    StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。
     
    StringBuilder和StringBuffer基本相似,两个雷的构造器和方法也基本相同。不同的是,StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。因此在通常情况下,如果需要创建一个内容可变的字符串对象,则应该优先考虑使用StringBuilder类。
     
    提示:
    String、StringBuffer和StringBuilder都实现了CharSequence接口,因此CharSequence可认为是一个字符串的协议接口。
     
    String类提供了大量构造器来创建String对象,其中如下几个有特殊用途。
    ◆String():创建一个包含0个字符串序列的String对象(并不是返回null)
    ◆String(btye[] bytes, CharSet charset):使用指定的字符集将指定的byte[]数组解码成一个新的String对象
    ◆String(btye[] bytes, int offset, int length):使用平台的默认字符集将指定的byte[]数组从offset开始、长度为length的子组解码成一个新的String对象
    ◆String(btye[] bytes, int offset, int length, String charsetName):使用平台的默认字符集将指定的byte[]数组从offset开始、长度为length的子组解码成一个新的String对象
    ◆String(btye[] bytes, String charsetName):使用指定的字符集将指定的byte[]数组解码成一个新的String对象
    ◆String(String original):根据字符串直接量来创建一个String对象。也就是说,新创建的String对象是该参数字符串的副本。
    ◆String(StringBuffer buffer):根据StringBuffer对象来创建对应的String对象。
    ◆String(StringBuilder builder):根据StringBuilder对象来创建对应的String对象。
     
    String类也提供大量方法来操作字符串对象,下面详细介绍这些常用方法。
    ◆char charAt(int index):获取字符串中指定位置的字符。其中,参数index指的是字符串的序数,字符串的序数从0开始到length()-1。如下代码所示。
    String s = new String("fkit.org");
    System.out.println("s.charAt(5):"+s.charAt(5));
    结果为:
    s.charAt(5):o
    ◆int compareTo(String anotherString):比较两个字符串的大写。如果两个字符串的戏份序列相等,则返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差。另一种情况,较长字符串的前面部分恰好是较短的字符串,则返回它们的长度差。
    String s1 = new String("abcdefghijklmn");
    String s2 = new String("abcdefghij");
    String s3 = new String("abcdefghijalmn");
    System.out.println("s1.compareTo(s2):"+s1.compareTo(s2));//返回长度差
    System.out.println("s1.compareTo(s3):"+s1.compareTo(s3));//返回'k'-'a'差
    结果为:
    s1.compareTo(s2):4
    s1.compareTo(s3):10
    ◆String concat(String str):将该String对象与str连接在一起。与Java提供的字符串连接运算符"+"的功能相同。
    ◆boolean contentEquals(StringBuffer sb):将该String对象与StringBuffer对象sb进行比较,当它们包含的字符序列相同时返回true。
    ◆static String copyValueOf(char[] data):将字符数组连缀成字符串,与String(char[] content)构造器的功能相同。
    ◆static String conyValueOf(char[] data, int offset, int count):将char数组的子数组中的原始连缀成字符串,与String(char[] value, inoffset, int count)构造器的功能相同。
    ◆boolean endsWith(String suffix):返回该String对象是否以suffix结尾。
    String s1 = "fkit.org";String s2 = ".org";
    System.out.println("s1.endsWith(s2):"+s1.endsWith(s2));
    结果为:
    s1.endsWith(s2):true
    ◆boolean equals(Object anObject):
    ◆boolean equalsIgnoreCase(String str):
    ◆byte[] getBytes():
    ◆void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):
  • 相关阅读:
    CSS3 Flex布局整理(二)-容器属性
    CSS3 Flex布局整理(一)
    .Net Core中文编码问题整理
    Karma:1. 集成 Karma 和 Jasmine 进行单元测试
    Protractor
    翻译: TypeScript 1.8 Beta 发布
    webpack 插件: html-webpack-plugin
    How I came to find Linux
    翻译:Angular 2
    在 Angular 中实现搜索关键字高亮
  • 原文地址:https://www.cnblogs.com/heweiquan/p/4835073.html
Copyright © 2011-2022 走看看