`
winie
  • 浏览: 216944 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java中String,StringBuffer,StringTokenizer类

    博客分类:
  • java
阅读更多
String类:
java.lang.String类,不属于8种基本数据类型,String是一个对象,表示字符串常量。
因为对象的默认值是null,所以String的默认值也是null,但它又是一种特殊的对象,有其他对象没有的特性。
new String()和new String("")都是声明一个新的空字符串,是空串不是null。区别:空串是经过new运算符分配了内存,即实际存在了(定义了)。而null则没有(只声明),调用null的字符串的方法会抛出空指针异常。

从根本上认识java.lang.String类和String池。
1、String类是final的,不可被继承。public final class String。
2、String类的本质是字符数组char[],并且其值不可改变。private final char value[];
3、String类对象有个特殊的创建方式,如String x="abc"; "abc"就表示一个字符串对象,而x是"abc"对象的地址,叫做"abc"引用。
4、Java运行时会维护一个String pool(String池),String池中的字符串内容不可重复,而一般对象(非String类)不存在这个缓冲池,并且创建的对象仅仅用于方法的堆栈区。
5、创建字符串的方式归纳起来有三种:
<1>、使用new关键字创建字符串,String s = new String("abc");
<2>、直接指定,String s = "abc";
<3>、使用串联生成新的字符串,String s = "ab" + "c";
String对象的创建:
1、当使用任何方式来创建一个字符串对象s时,JVM会拿这个s在String池中找是否存在内容相同的字符串对象。如果不存在,则在池中创建一个字符串s,否则,不在池中添加。
2、Java中,只要使用new关键字类创建对象,则一定会(在堆区或栈区)创建一个新对象。
3、使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则直接返回已有的字符串对象地址(引用)。绝不会在堆栈去再创建该String对象。
4、使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。

String的不可变性:
不可变字符串具有一个很大的有点:编译器可以把字符串设置为共享。
String类型是不可改变的,比如当你想改变一个String对象时,如:
String s = "abc";
s = "fuck";
JVM 不会改变原来的对象("abc"),而是生成一个新的String对象("fuck",当然先检查String池中是否已经有"fuck"字符串对象,有则引用,无则新建),然后让s去指向它,如果原来那个"abc"没有任何对象引用它,虚拟机的垃圾回收机制会接收它。这样可以提高运行效率!
注意:Java中字符串内容的比较用的是专门的方法如equals,compareTo等。==比较的是字符串的引用是否相同。


StringBuffer类:
字符串变量。可修改的字符串序列,该类的对象实体内存空间可以自动改变大小,便于存放一个可变的字符序列。
StringBuffer类有3个构造方法:
StringBuffer()
StringBuffer(int size)
StirngBuffer(String s)
当使用第1个无参数的构造方法时,分配给该对象的实体初始容量可以容纳16个字符,当该扩展字符序列长度>16时,实体容量自动增加以适应新字符串。
当使用第2个构造方法,可以指定分配给该对象的实体的初始容量为参数size指定的字符个数。当对象实体长度>size时自动增加。
当使用第3个构造方法,分配给该对象的实体的初始容量为参数字符串s的长度+16个字符,当对象实体长度大于初始容量时,实体容量自动增加。
StringBuffer对象可以通过length()放发获取实体存放的字符序列长度。通过capacity()方法获取当前实体的实际容量。


StringTokenizer类:
使用java.util.StringTokenizer类,分析一个字符串并分解成可独立使用的单词。
StringTokenizer类有两个常用构造方法:
StringTokenizer(String s):为字符串s构造一个分析器。使用默认的分隔符集合,即空格符(若干个空格符被看做一个空格)、换行符、回车符、Tab符、进纸符(\f)。
StringTokenizer(String s, String dilim):为字符串s构造一个分析器。参数dilim中的字符被作为分隔符。

把StringTokenizer 对象称作一个字符串分析器。一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中获得下一个语言符号,每获得一个语言符号,字符串分析器中负责计数的变量值自动减1,该计数变量的初始值等于字符串中的单词数目(可以用 StringTokenizer对象调用countTokens()方法获得计数值)。
如:
String str="we are stud,ents";
StringTokenizer fenxi = new StringTokenizer(str,", "); //使用空格和逗号做分隔符
int count=fenxi.countTokens();
while(fenxi.hasMoreElements())
{
String s = fenxi.nextToken();
System.out.println(s);
}
System.out.println("共有单词:"+count+"个。");

另外,StringTokenizer可以用String类的split函数代替
String str="abc;bcd;efg";
String[] splitStrs=str.split(";");
for(int i=0;i<splitStrs.length;i++)
System.out.println(splitStrs[i]);
分享到:
评论

相关推荐

    Java常用类及集合操作

    Java常用类 Math类 String类 StringBuffer类 StringTokenizer类 包装类 集合操作 集合 列表(List) 映射(Map) Collections类 枚举和迭代

    JAVA小论文(浅谈String类)

    Java提供了String类,StringBuffer类和StringTokenizer类来存储和处理字符串。大多数情况下,可以使用String类来创建字符串。

    java常用类.rtf

    JAVA常用类的使用方法 1、Integer类 2、Float类 3、Double类 4、Character类 5、String类 6、StringTokenizer类 7、StringBuffer类 8、Random类 9、UIManage类

    JAVA常用类的使用方法

    介绍Java.lang中常用户类的使用方法,包括(Integer类、Float类 、Double类 、Character类 、String类 、StringTokenizer类 、StringBuffer类)。

    Java2游戏编程.pdf

    4.3.1 java.util.StringTokenizer 4.3.2 java.util.Random 4.3.3 Java2集合框架 4.4 总结 4.5 练习 第2篇 Java 2-D图像开发和抽象Window工具包 第5章 Applet基础 5.1 什么是Java applet 5.2 Applet和Application的...

    java常用类使用方法

    1、Integer类 2、Float类 3、Double类 4、Character类 5、String类 6、StringTokenizer类 7、StringBuffer类

    JAVA面试题最全集

    一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握内部类和接口的概念 54.StringTokenizer类的使用 55.数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? ...

    Java实验报告

    正确使用字符串相关类(String,StringBuffer,StringTokenizer),日期类(Date、Calendar);另外,还有ArrayList、LinkedList、HashTable、TreeSet等都涉及在内。用Java实现对数据的增、删、改、查功能。

    Java正则表达式

    单从技术角度来讲,正则表达式只是一种处理字符串的工具(过去Java这个任务是交由String,StringBuffer以及StringTokenizer处理的),但是它常常和I/O一起使用,所以放到这里来讲也不算太离题吧。

    java编程基础,应用与实例

    15.4 java.util.StringTokenizer类 238 15.5 java.util.Calendar类 240 15.6 巩固练习 242 第16章 AWT程序设计 244 16.1 java.awt.Component类 244 16.2 java.awt.Container类 247 16.3 布局管理器 ...

    Thinking in Java简体中文(全)

    12.4.4 String和StringBuffer类 12.4.5 字串的特殊性 12.5 总结 12.6 练习 第13章 创建窗口和程序片 13.1 为何要用AWT? 13.2 基本程序片 13.2.1 程序片的测试 13.2.2 一个更图形化的例子 13.2.3 框架方法的演示 ...

    熟练掌握字符串处理技术

    熟并掌握string类、stringbuffer类和stringtokenizer类中的方法,并对字符串变量进行操作 要求对一个java程序进行简单的词法分析,找出其中用到的关键字、变量名、方法名以及操作运算符,并分别把它们打印出来

    java联想(中文)

    12.4.4 String和StringBuffer类 12.4.5 字串的特殊性 12.5 总结 12.6 练习 第13章 创建窗口和程序片 13.1 为何要用AWT? 13.2 基本程序片 13.2.1 程序片的测试 13.2.2 一个更图形化的例子 13.2.3 框架方法的演示 ...

    AIC的Java课程1-6章

    第12章 IO与串行化 2课时  了解Java IO 中类的层次结构,介绍Java IO采用的装饰器模式。  学会使用File,FileReader,BufferedReader,FileWriter,BufferedWriter,PrintWriter等类输入...

    java 编程入门思考

    12.4.4 String和StringBuffer类 12.4.5 字串的特殊性 12.5 总结 12.6 练习 第13章 创建窗口和程序片 13.1 为何要用AWT? 13.2 基本程序片 13.2.1 程序片的测试 13.2.2 一个更图形化的例子 13.2.3 框架方法的演示 ...

    Java初学者入门教学

    12.4.4 String和StringBuffer类 12.4.5 字串的特殊性 12.5 总结 12.6 练习 第13章 创建窗口和程序片 13.1 为何要用AWT? 13.2 基本程序片 13.2.1 程序片的测试 13.2.2 一个更图形化的例子 13.2.3 框架方法的演示 ...

    Java程序设计语言考试试题

    A.String B.StringBuffer C.StringTokenizer D.stringTokenizer 5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是( ) A.JFrame(s) B.window(s) C.new JFrame(s) D.super(s) 6.以下...

    JAVA_Thinking in Java

    12.4.4 String和StringBuffer类 12.4.5 字串的特殊性 12.5 总结 12.6 练习 第13章 创建窗口和程序片 13.1 为何要用AWT? 13.2 基本程序片 13.2.1 程序片的测试 13.2.2 一个更图形化的例子 13.2.3 框架方法的演示 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    12.4.4 String和StringBuffer类 12.4.5 字串的特殊性 12.5 总结 12.6 练习 第13章 创建窗口和程序片 13.1 为何要用AWT? 13.2 基本程序片 13.2.1 程序片的测试 13.2.2 一个更图形化的例子 13.2.3 框架方法的演示 ...

Global site tag (gtag.js) - Google Analytics