Java的简单理解(5)---String类和StringBuffer类

Java
52. String类

String类是不可变类,一个String对象所包含的字符串内容永远不会被改变。

  • String 常量字符串,一旦赋值或实例化后就不可更改。

java.lang包中的String类代表字符串。Java程序中的所有字符串字面值(如"abc")都作为此类的实例来实现。字符串是常量,它们的值在创建之后不能改变,因为String对象是不可变得,所以可以共享。

对于String类对象不可更改,我是有点疑惑的,请看这篇文章

  • String类常用方法
  1. public int length():
    返回此字符串的长度
  2. public native char charAt(int index):
    返回指定索引处的char值,索引范围为从0到length() - 1。序列的第一个char值在索引0处,第二个> 在索引1处,依次类推,这类似于数组索引。
  3. public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
    将字符从当前字符串复制到目标字符数组。要复制的第一个字符在索引srcBegin处,要复制的最后一个字符在在索引srcEnd - 1处,因此要复制的字符总数是srcEnd - srcBegin。要复制到dst子数组的字符从索引dstBegin处开始,并结束与索引dstBegin + (srcEnd - srcBegin)- 1。
  4. public boolean equals(Object anObject)
    比较此字符串与指定的对象,当且仅当该参数不为null,并且表示与此对象相同的字符序列的String对象时,结果才为true。
  5. public boolean equalsIgnoreCase(String anotherString):
    将此String与另一个String进行比较(不考虑大小写)。如果两个字符串的长度相等,并且两个字符串中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。
  6. public native int compareTo(String anotherString):
    按字典顺序比较两个字符串。该比较基于字符串中各个字符的unicode值。将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较,如果按字典顺序,此String对象在参数字符串之前,则比较结果为一个负整数;如果按字典顺序,此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。compareTo方法只有在方法equals(Object)返回true时才返回0.
  7. public int indexOf(int ch):
    返回指定字符在此字符串中第一次出现处的索引。如果在此String对象表示的字符序列中出现值为ch的字符,则返回第一次出现该字符的索引;如果此字符串中没有这样的字符,则返回-1.
  8. public int lastIndexOf(int ch):
    从最后一个字符开始向后搜索此String,返回最后一次出现的指定字符在此字符串中的索引。如果此字>
    符串中没有这样的字符出现,则返回-1。
  9. public String substring(int beginIndex):
    返回一个新的字符串,它是此字符串的一个子字符串。该字符串始于指定索引处的字符,一直到此字符串末尾。
  10. public String concat(String str):
    将指定字符串联到此字符串的结尾。如果参数字符串的长度为0,则返回此String对象。否则创建一个新的String对象,用来表示由 此String对象表示的字符序列和由参数字符串表示的字符序列串联而成的字符序 列.
  11. public String[] split(String regex,int limit): 正则表达式不懂
    根据匹配给定的正则表达式来拆分此字符串。此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列,如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。limit参数控制模式应用的次数,因此影响结果数组的长度。如果该限制n大于0,则模式将被最多应用n-1次,数组的长度将不会大于n,而且数组的最后一项将包含超出最后匹配的定界符的所有输入;如果n为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度;如果n为0,则模式将被应用尽可能多的次数,数组可以有任何长度,并且结尾空字符串将被丢弃。
  12. public String replaceAll(String regex,String replacement):
    使用给定的replacement字符串替换此字符串匹配给定的正则表达式的每个子字符串。
  13. public String trim()
    返回字符串的副本,忽略前导空白和尾部空白。如果此String对象表示一个空字符序列,或者此String对象表示的字符序列的第一个和最后一个字符的代码都大于\u0020(空格字符),则返回对此String对象的引用;如果字符串中没有代码大于\u0020的字符,则创建并返回一个表示空字符串的新的String对象;否则假定K为代码大于\u0020的第一个字符的索引,m为代码大于\u0020的最后一个字符的索引,创建一个新的String对象,它表示此字符串中从索引K处的字符开始,到索引m处的字符结束的子字符串,就是this.substring(k,m+1)的结果。此方法用于截去字符串从头到尾的空白。
    一般的字符大于\u0020,换行符等转义字符小于\u0020
  14. public static String valueOf(Object obj):
    返回Object参数的字符串表示形式。
53. StringBuffer类

java.lang包中的StringBuffer类表示可变字符序列。

StringBuffer类上的主要操作是appendinsert方法,可重载这些方法,以接收任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append方法始终将这些字符添加到缓冲区的末端;而insert方法则在指定的点添加字符。

StringBuilder: 线程不安全,效率高
StringBuffer: 线程安全,效率低

每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内容缓冲区数组。如果内容缓冲区溢出,则此容量自动增大。从JDK5开始,为该类补充了一个单个线程使用的等价类,即StringBuilder。与该类相比,通常应该优先使用StringBuilder类,因为它支持所有相同的操作,但由于它不支持同步,所以速度更快。

54. StringBuffer类的常用方法
  1. toString()
    返回此序列中数据的字符串表示形式

  2. append(boolean b):
    将boolean参数的字符串表示形式追加到序列

  3. length():
    返回长度(字符数)

  4. charAt(int index):
    返回此序列中指定索引处的char值。

  5. setCharAt(int index,char ch):
    将给定索引处的字符设置为ch。

  6. public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
    将字符从此序列复制到目标字符数组dst。

  7. public String substring(int start):
    返回一个新的String,它包含此字符序列当前所包含的字符子序列

  8. insert(int offset, String str):
    将字符串插入此字符序列中。

55. String类和StringBuffer类下字符串的区别

String:常量字符串,一旦赋值或实例化后就不可更改。
StringBuffer:字符串缓冲区,支持可变的字符串。
如果对字符串中的内容经常进行操作,特别是内容要修改时,使用StringBuffer;如果最后需要String,使用StringBuffertoString()方法。

56. 基本数据类型的对象类

Java的基本数据类型包括byteintshortlongfloatdoublecharJava同时也提供了基本数据类型相关的类,Java语言用包装类来把基本类型数据转换为对象。每个Java基本类型在java.lang包中都有一个相应的包装类。

1,Double类和Float类

Double类和Float类实现了对doublefloat基本型数据的类包装
(1)Double类在对象中包装了一个基本类型double的值,每个Double类的对象都包含一个double类型的字段。
Double类的构造方法

Double (double num)

构造一个新分配的Double类对象,它表示基本的double类型参数。此外,该类还提供了多个方法,可以将double类型转换为String类型,将String类型转换为double类型,还提供了其他一些处理double类型时有用的常量和方法。

(2)Float类在对象中包装了一个float基本类型的值,Float类的对象包含一个float类型的字段。
Float类的构造方法:

Float (double value)

构造一个新分配的Float对象,它表示转换为float类型的参数。此外,此类提供了几种方法可在float类型和String类型之间互相转换,并且还提供了处理float类型时非常有用的其他一些常量和方法。

2. Byte,Integer,Short,Long类

(1)Byte类将基本类型byte的值包装在一个对象中。
Byte类的构造方法:

Byte (byte value)

该类提供了多个方法,可以将byte类型与String类型进行互换。

(2) Integer类在对象中包装了一个基本类型int的值,Integer类的对象包含一个int类型的字段
Integer类的构造方法:

Integer (int value)

该类提供了多个方法,可以将int类型与String类型进行互换。

(3) Short类在对象中包装基本类型short的值,一个Short类的对象只包含一个short类型的字段。
Short类的构造方法:

Short (short value)

该类提供了多个方法,可以将short类型与String类型进行互换。

(4) Long类在对象中封装了基本类型long的值。每个Long类的对象都包含一个long类型的字段。

Long (long value)

该类提供了多个方法,可以将long类型与String类型进行互换。

3. Character类

Character类在对象中包装一个基本类型char的值。Character类的对象包含类型为char的单个字段。
Character类的构造方法:

Character (char value)

构造一个新分配的Character对象,用于表示指定的char值。Character类还提供了几种方法,这些方法可以直接通过类名调用,用来确定字符的类别(小写字母,数字等),并将字符从大写转换成小写,反之亦然。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350