【Java 进阶篇】【第一课】String类
引用
String类包含在java.lang包中。这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class)。我们不需要显式的使用import引入String类。
创建
String类是唯一一个不需要new关键字来创建对象的类。使用的时候需要注意
String s = "Hello World!";
System.out.println(s);
操作
可以用+实现字符串的连接(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!"
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!",原字符串对象将被垃圾回收。
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/
最新文章
- Jmeter教程 简单的压力测试
- 【总结】C# 设置委托的机理和简要步骤
- RSS与公众号
- Seajs是什么及sea.js 由来,特点以及优势
- firefox浏览器不能使用window.close的解决方案
- 【转载】 Python 调整屏幕分辨率
- SQL数据库基础(六)
- iOS 模仿微信的照片选择器
- Poj(2349),最小生成树的变形
- BIG5编码表
- 简单易学的机器学习算法——EM算法
- 宇宙【全7季】【合集】【蓝光1080P】【历史频道】
- hdu 2818 Building Block (带权并查集,很优美的题目)
- Python正则匹配字母大小写不敏感在读xml中的应用
- Asp.Net Web API 2(CRUD操作)第二课
- android笔记20170116
- 数据库 【redis】 命令大全
- Flume调优
- vue-devtools chrome 开发工具
- 探索Java8:Stream的使用
热门文章
- Jquery用途
- POJ3321 Apple Tree(DFS序)
- HDU 1010 (DFS搜索+奇偶剪枝)
- c++ auto_ptr 智能指针
- Java之美[从菜鸟到高手演变]之HashMap、HashTable(转载)
- 【wikioi】1904 最小路径覆盖问题(最大流+坑人的题+最小路径覆盖)
- libtiff 生成48位色tif图片
- Grasshopper 2.0 MP Color FireWire 1394b (Sony ICX274)
- easyui datagrid 增删改查示例
- 【应用笔记】【AN001】VC#开发环境下基于以太网的4-20mA电流采集(基于modbus tcp 协议)