1,String类(属于java.lang包)定长,不可变的字符序列
(1)构造方法
1用双引号将字符序列括起来,int n = "abcdef".length();
2采用new方法,new String(构造方法的参数列表);
eg: String s0 = new String("string");
3通过运算符“+”或其他成员方法生成String实例对象。
String s = "abc".toUpperCase();将生成字符串ABC。在java语言
中,任何一种类型的数据都可以转化成String类型的数据:
String.valueOf(基本数据类型数据);
Double d = 0.12; String s = String.valueOf(d);
结果字符串实例对象的值为“0.12”
补充:对于引用数据类型:引用数据类型数据.toString();因public String to
String() 是类Object的一个方法,而java中其他类都是类Object的子类,所以所有的java类均会含有成员方法toString.在调用Syetem,out.println或者
Syetem.out.print时,如果他们的参数是非字符串类型的数据,则一般将自动调用toString方法将其转换成字符串,然后输出。
(2)对字符串内字符的访问。
通过String成员方法:public char charAt(int index);
"abc".charAt(1),将返回字符“b”。
字符串中字符的个数可以通过public int length()得到
(3)字符串内容的比较:可通过以下成员方法:
public int compareTo(String anotherString)(区分大小写)
public int compareToIgnoreCase(String anotherString)(不区分大小写,在比较之前先将两个字符串列统一成大写或者小写再进行比较)
另外还有:
Boolean equals(object str)
Boolean equalsIgnoreCase(String str)
(4)字符串常量、成员方法intern和运算符“ ==”
字符串常量:是指向类Stirng实例(也称为字符串实例)的引用,它存储在字符串池中,而且相同内容的字符串只对应一个字符串实例对象。
方法intern:调用类String成员方法intern后,类String所维护的字符串池也会含有与该字符串实例相同内容的字符串实例。如果 字符串池已经含有相同内容的字符串实例,则返回该字符串实例的引用;否则在字符串池中创建一个新的具有该内容的字符串实例,并返回该实例的应用。此方法可 以用来判断字符串实例引用是否相等。
如:s1.inter() == s0.intern()可以用来判断所s0与s1(s0和s1为字符串类型的变量)所指向的字符串实例的内容是否相同,相同则返回true,否则返回false。
"=="与public boolean equals(Object anObject)方法是不同的。
String s0 = "hello";
String s2 = new String("hello");
System.out.println(s0 == s2);
System.out.println(s0.equals(s2));
结果为:false
true
(5)字符串的修改
1.运算符“+”
当两边都是字符串实例的引用时,运算的结果是将生成一个新的字符串实例,内容为两自符串实例内容的合并的结果。
"String "+"abc" 结果是“String abc”
当两侧不一致时,先将不为字符串数据的数据转化成字符串数据,再进行字符串间的“+”操作:“String ” + 1 结果为“String 1”
2.类String中提供的方法(属于java.lang包)
String substring(int startIndex) 截取子串
String substring(int startIndex,int endIndex) 截取子串
String concat(String str) 连接两个字符串
String replace(char oldstring,char newstring) 将前者替换为后者
String replace(CharSequence target,CharSequence replacement) 替换指定目标序列 eg:将aaa中的aa用b替代后成为:ba
String trim() 用来去除字符串前后多余的空格
(6)字符串与基本数据类型的转换 (具体可见帮助手册中关于valueOf方法的介
绍:)
public static 类型名 valueOf(String s) 如:
public static Boolean valueOf(String s),(其中Character没有成员方法 valueOf) 然后再将基本数据类型的包装类数据转换成基本数据类型数据类型数据
Public boolean boooleanValue()
eg:Boolean b = Boolean.valueOf("true").booleanValue();将字符串转换成布尔数据。
(7)字符串的搜索
Int indexOf();字符或者字符串首次出现的位置
Int lastIndexOf();字符或者字符串最后一次出现的位置
2.StringBuffer类 可变长,可写的字符序列
String实例一旦创建完毕,就不能再修改其内容。而StringBuffer则可以修改实例所包含的字符序列。
(1)两者之间的转换
1.String 到 Stringbuffer:
public StringBuffer(String str)
String s0="abc";
StringBuffer b = new StringBuffer(s0);
2.Stringbuffer到String:public String(StringBuffer实例的引用)
Public String toString(); 设b为StringBuffer类型的变量,则
String s = new String(b);与String s = b.toString();有相同的效果。
(2)修改StringBuffer实例内容
可通过成员方法public int length()获取StringBuffer实例的字符序列的长度.通过成员方法StringBuffer的成员方法 public char charAt(int index)得到字符序列中指定下标的字符.
1.pubic void setCharAt(int index,char ch)用来将StringBuffer实例的字符序列中指定下标的字符设置为指定的字符。
StringBuffer b = new StringBuffer("that");
b.setCharAt(0,'c'); 将that变为chat
2.成员方法append是在字符序列之后再添加新的内容
StringBuffer b = new StringBuffer("Party");
b.append("good!"); 结果为Party good!
3.成员方法delete用来删除字符序列中指定的子序列
StringBuffer b = new StringBuffer("Those");
b.delete(2,4); 结果为The 注意2-4中不包括4,且下标从0开始
5.此外还有insert,replace,reverse等,可查看在线帮助来获得这些方法的用法。
(3)StringBuffer实例的容量
StringBuffer实例的字符序列是允许发生变化的,包括字符个数的变化。为了减少频繁的内存申请,StringBuffer实例占有的内存一般要比实际的字符序列所需的空间要大。
1.可通过StringBuffer的成员方法 public int capacity()获得StringBuffer实例的容量。public int length()方法获得实例的长度。
2.void ensureCapacity方法在默认的基础上改变容量的大小。
void setLength(int len)来指定新字符的长度,这个值是非负的。
构造方法 字符序列长度 内存容量
public StringBuffer() 0 16
Public StringBuffer(int length) 0 length
Public StringBuffer(String str)str中的字符序列长度 str中的字符序列长度加16
阅读(2759) | 评论(0) | 转发(0) |