上个月中旬开始学习java,不是因为我要用他。只是觉得它是一种优秀的面向对象的高级编程语言,而且用它写的程序可以做到跨平台使用,所以就想学习一下,扩展一下自己的思维。为了能和大家讨论和分享我的学习体会,所以将我的笔记发上来,前一段时间的学习笔记都是用英文做的,就不发了,从今天开始。我学习的主要资料来源是http://java.sun.com/docs/books/tutorial/。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. 数和字符串之间可以相互转换:
通常可以使用数类的parserXXXX()或者valueOf()可以将字符串转换成对应的数。
有时候,我们需要将数转换成相应的字符串,这个时候可以用以下几种方式:把要转换的数值和一个空的字符串合并;也可以使用字符串类的valueOf()方法;数类还提供了一种方法toString,使用该方法可以很容易的将数值转换成字符串。
2. 对字符串种字符的操作:
字符串类有一系列的方法可以检查字符串的内容,寻找字符串种的某个字符或者子字符串,修改字符的大小写,以及其他的工作。
获取字符串种某个特定位置字符的方法是charAt(),例如str.charAt(2)就是获取字符串str中第2个索引出的字符,需要注意的字符串的索引是从0开始,最后一个所以就是字符串的长度减一,这样字符串中最后一个字符就是str.charAt(str.length() - 1)。
在某些时候,我们可能需要获取的是字符串中一段连续的字符而不是一个字符。我们把字符串中一段连续的字符成为这个字符串的子字符串,而且我们可以使用substring方法可以获取字符串中的子字符串。例如str.substring(2)获得的子字符串就是从str中第2个字符开始一直到str结尾,而str.substring(2,4)获得的字符串是从str的第2个字符开始到第4个字符结束。
转换大小写的方法是toLowerCase()和toUpperCase(),顾名思义,不作赘述。
trim()这个方法能返回一个新的字符串,这个新的字符串去掉了原来字符串开始和结尾出的空格。
搜索是很有必要的,无论是搜索字符还是子字符串。基本的方法有两个,一个是indexOf(),另外一个是lastIndexOf()。如下表所示:
方法 | 描述 |
int indexOf(int ch) int lastIndexOf(int ch) | 返回字符串中第一个(最后一个)出现指定字符的索引。 |
int indexOf(int ch, int fromIndex) int lastIndexOf(int ch, int fromIndex) | 从指定的索引开始从前往后(从后往前)开始搜索,返回第一个(最后一个)出现指定字符的索引。 |
int indexOf(String str) int lastIndexOf(String str) | 返回字符串中第一个(最后一个)出现指定字符串的索引。 |
int indexOf(String str, int fromIndex) int lastIndexOf(String str, int fromIndex) | 从指定的索引开始从前往后(从后往前)开始搜索,返回第一个(最后一个)出现指定字符串的索引。 |
搜索虽然有时很管用,但是我们有时候,我们不管要找到,而且还要更换。此时,replace()方法给我们提供了了有力的帮助,使用replace相关的方法,可以很轻松的完成指定字符或者子字符串的替换。如下表所示:
方法 | 描述 |
String replace(char oldChar, char newChar) | 返回一个新的字符串,该字符串使用newChar替换了原字符串中所有的oldChar。 |
String replace(CharSequence target,CharSequence replacement) | 用replacement替换字符串中所有的target字符序列。 |
和正则表达式相关的字符串的操作方法先不在这里学习,等学完正则表达式之后再回来进行学习。
3.字符串的比较
字符串类为我们提供了很多字符串之间进行比较或者字符串与字符串的一部分进行比较的方法。掌握这些方法可以帮助我们快速的完成字符串比较的相关工作。具体介绍如下表所示,同样下面也不包括和正则表达式有关的比较方法。
方法 | 描述 |
boolean endsWith(String suffix) boolean startsWith(String prefix) | 如果字符串以prefix开始或者以suffix结束就返回true。 |
boolean startsWith(String prefix, int offset) | 从offset开始,如果字符串按照prefix开始则返回true. |
int compareTo(String anotherString) | 顺序比较两个字符串,返回值有大于0或等于0或小于0。 |
int compareToIgnoreCase(String anotherString) | 顺序比较两个字符串,忽略大小写,返回值有大于0或等于0或小于0。 |
boolean equal(Object anObject) | 当且仅当anObject是一个字符串对象并且和当前对象具有相同的字符序列时返回true. |
boolean equalIgnoreCase(Object anObject) | 当且仅当anObject是一个字符串对象并且和当前对象具有相同的字符序列时返回true,比较是忽略大小写. |
boolean regionMatches(int toffset, String other, int ooffset, int len) | 比较两个字符串中是否有相同的区域,区域的长度是len,当前字符串的从toffset开始,而另一个字符串从ooffset开始。 |
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) | 比较两个字符串中是否有相同的区域,区域的长度是len,当前字符串的从toffset开始,而另一个字符串从ooffset开始。弱ignoreCase为true,则比较时忽略大小写,否则不忽略。 |
4. StringBuilder类
StringBuilder和String不同之处在于StringBuilder可以被修改,而String不能被修改。StringBuilder就像是一个可变长度的数组,并且其长度和其中的内容都可以通过调用它的方法加以修改。大多数情况下,我们应当使用String而不是StringBuilder,除非使用StringBuilder能带来明显的好处,比如使源码更加简单,能获得更高的效率,例如要将很多String字符串合并起来,则使用StringBuilder比较好。
关于length()和capacity()。StringBuilder的length和String是一样,都是字符串的长度,也就是字符串中包含字符的个数。而capacity是StringBuilder独有的,其含义是为字符串非配的存储空间的大小,并且能够根据需要自动扩展大小。和length和capacity有关的两个方法是setLength()和ensureCapacity。
StringBuilder主要的操作有append,insert,delete,reserve,replace,toString等,详见下表:
方法 | 描述 |
StringBuilder append(boolean b) | 将参数转换成String字符串并附加到StringBuilder后面。 |
StringBuilder delete(int start, int end) | 删除StringBuilder中指定的字符或字符串。 |
StringBuilder insert(int offset, boolean b) | 将第二个参数转换为String字符串并插入到第一个参数指定的位置处。 |
StringBuilder replace(int start, int end, String s) | 替换StringBuilder中指定的字符或者字符串。 |
StringBuilder reverse() | 颠倒StringBuilder中的字符的顺序。 |
String toString() | 返回一个包含StringBuiler中字符序列的String字符串。 |
一个小技巧:可以使用toString()先将StringBuilder对象转换成String对象,这样就可以使用String对象的所有方法,处理完之后再使用StringBuilder(String str)构造器将String对象转换为StringBuilder对象。
总结:Number和String之间可以相互转换,String类有很多实用的方法,主要包括查找,比较,替换等,StringBuilder提供了一种可修改的变长字符串。
文章评论(0条评论)
登录后参与讨论