作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础。在Java进阶中,我将对Java基础进行补充,并转向应用层面。

大部分编程语言都能够处理字符串(String)。字符串是有序的字符集合,比如"Hello World!"。在Java中,字符串被存储为String类对象。调用字符串对象的方法,可以实现字符串相关的操作。

String类包含在java.lang包中。这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class)。我们不需要显式的使用import引入String类。

创建字符串

我们之前使用类来创建对象。需要注意的时候,创建String类对象不需要new关键字。比如:

public class Test
{
public static void main(String[] args)
{
String s = "Hello World!";
System.out.println(s);
}
}

实际上,当你写出一个"Hello World"表达式时,内存中就已经创建了该对象。如果使用new String("Hello World!"),会重复创建出一个字符串对象。

An Object

String类是唯一一个不需要new关键字来创建对象的类。使用的时候需要注意。

字符串操作

可以用+实现字符串的连接(concatenate),比如:

"abc" + s

字符串的操作大都通过字符串的相应方法实现,比如下面的方法:

方法                               效果

s.length()                        返回s字符串长度

s.charAt(2)                       返回s字符串中下标为2的字符

s.substring(0, 4)                 返回s字符串中下标0到4的子字符串

s.indexOf("Hello")                返回子字符串"Hello"的下标

s.startsWith(" ")                 判断s是否以空格开始

s.endsWith("oo")                  判断s是否以"oo"结束

s.equals("Good World!")           判断s是否等于"Good World!"

==只能判断字符串是否保存在同一位置。需要使用equals()判断字符串的内容是否相同。

s.compareTo("Hello Nerd!")        比较s字符串与"Hello Nerd!"在词典中的顺序,

返回一个整数,如果<0,说明s在"Hello Nerd!"之前;

如果>0,说明s在"Hello Nerd!"之后;

如果==0,说明s与"Hello Nerd!"相等。

s.trim()                          去掉s前后的空格字符串,并返回新的字符串

s.toUpperCase()                   将s转换为大写字母,并返回新的字符串

s.toLowerCase()                   将s转换为小写,并返回新的字符串

s.replace("World", "Universe")    将"World"替换为"Universe",并返回新的字符串

不可变对象

String类对象是不可变对象(immutable object)。程序员不能对已有的不可变对象进行修改。我们自己也可以创建不可变对象,只要在接口中不提供修改数据的方法就可以。

然而,String类对象确实有编辑字符串的功能,比如replace()。这些编辑功能是通过创建一个新的对象来实现的,而不是对原有对象进行修改。比如:

s = s.replace("World", "Universe");

右边对s.replace()的调用将创建一个新的字符串"Hello Universe!",并返回该对象(的引用)。通过赋值,引用s将指向该新的字符串。如果没有其他引用指向原有字符串"Hello World!",原字符串对象将被垃圾回收。

不可变对象

Java API

Java提供了许多功能强大的包。Java学习的一个重要方面是了解这些包以及其中包含的API(Application Programming Interface)。String类定义在java.lang.String。你可以查询下面的Oracle网址,来找到该类的官方文档:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

该文档中包含了String类最全面的介绍。

事实上,API文档中有丰富的内容,你通过下面链接概览:

http://docs.oracle.com/javase/6/docs/api/

最新文章

  1. HTML5中支持新的媒体元素有这些
  2. Vue2.0学习笔记一 :各种表达式
  3. jQuery.Data源码
  4. Mysql 学习
  5. cordova在app内部指定浏览器打开链接插件:cordova-plugin-inappbrowser
  6. [DEncrypt] C# DEncrypt加密/解密帮助类(转载)
  7. FastReport扩展类
  8. laravel安装 笔记
  9. man page里面函数后面的括号中的数字代表的含义。
  10. H3C交换机如何配置管理VLAN
  11. C入门注意事项
  12. enzyme design 整体流程及感想
  13. phpstorm 注释模板
  14. centos6.5 安装PHP7.0支持nginx
  15. conda创建虚拟环境
  16. HDU3506环形石子合并问题
  17. Active Directory、Exchange、单点登录,企业账号统一管理解决方案
  18. Spring boot @ConfigurationProperties 和@Value
  19. 77. Combinations(回溯)
  20. upstream模块实现反向代理的功能

热门文章

  1. [CentOS7] gzip, bzip2, xz 压缩与解压缩
  2. &lt;富爸爸,穷爸爸&gt; 书中的好句子
  3. bootstrap入门案例
  4. (扫码二维码不显示)php微信扫码支付sdk不能用了
  5. remap——ROS中修改订阅的节点名称
  6. 飘逸的python - 装饰器的本质
  7. SpringMVC 思想介绍
  8. Spring【基础】-注解-转载
  9. 洛谷 P1536 村村通(并查集)
  10. EIGRP-8-路由器的邻接关系